我一直在寻找一段时间,但没有发现任何符合我具体问题的内容。
我的情景: 我有一个事件列表,我使用ng-repeat在表格中显示。每个活动都有一个状态。 要仅显示新事件,我使用过滤器。 查看新事件时,用户可以按一个按钮将状态更改为“完成”。我希望该特定事件从“新”过滤器中消失。
我成功地添加了一个getEvents来重新加载来自服务器的数据,但它不会在我的视图上更新
这是我的代码:
角:
app.controller('EventsController', ['$http', '$log', function($http, $log) {
var info = this;
info.events = [];
this.getEvents = function(){
$http.get(serverUrl+"/api/GuiEventInfos").success(function(data){
info.events = data;
}
}
app.controller('StatusController',['$http', function($http) {
this.updateStatusDone = function(eventid, newStatus){
var requestData = {"event-id":eventid, "new-status-id":2};
$http.put(serverUrl+"/event", requestData).success(function(){
info.getEvents();
});
} ...
应用过滤器的Html:
...
<li ng-click="toggle = !toggle; statusFilter = { '': 'new', 'new':''}[statusFilter]">
...
显示表格的HTML:
<tr ng-repeat="event in EventsCtrl.events | filter:searchText | filter:statusFilter | orderBy:orderParam">
<td class="center">
<a ng-click="status.updateStatusDone(event.eventid)" class="btn-in-table" href="#">
<i class="glyphicon glyphicon-ok"></i>
</a>
我也尝试将数据绑定到模型,希望模型更改时,它会在视图中更新...
已添加<tr ng-model="EventsCtrl.events"...
我确信有一些非常简单的东西我错过了!
谢谢你的帮助
编辑:添加了EventsController的角度代码
答案 0 :(得分:0)
未经测试但如果要将视图从控制器更新到另一个,请考虑使用$ scope。$ emit('event',args); :
app.controller('EventsController', ['$http', '$log', function($http,$log) {
this.events = [];
var info = this;
$scope.$on('needUpdate', function(event, args) {
$http.get(serverUrl+"/api/GuiEventInfos").success(function(data){
info.events = data;
}
}
}]);
app.controller('StatusController',['$http', function($http) {
this.updateStatusDone = function(eventid, newStatus){
var requestData = {"event-id":eventid, "new-status-id":2};
$http.put(serverUrl+"/event", requestData).success(function(){
$scope.$emit('needUpdate', args);
});
}]);
如果它不起作用,我会进一步看到。