【发布时间】:2015-04-21 16:10:09
【问题描述】:
我有一个看起来像这样的角度指令:
myApp.directive('foo', function() {
return {
template: '<span>{{foo.bar}}</span>',
restrict: 'E',
scope: true,
controller: 'myController'
};
});
编辑 我最初使用此控制器设置指令:
myApp.controller('myController', function ($scope, MyModel) {
$scope.foo = MyModel.get();
});
从第二个控制器修改模型似乎可以正常工作:
myApp.controller('myOtherController', function($scope, MyModel) {
setTimeout(function() {
MyModel.set({
bar: "biz"
});
}, 3000);
});
但不使用此控制器代码:
myApp.controller('myOtherController', function($scope, MyModel) {
$http.get("/resource").then(function(response) {
MyModel.set(response.data);
});
});
我已经确认模型在这两种情况下都会更新,但指令不会使用 $http 请求更新视图。
这是一个Plunker,它将为您提供总体思路。
我尝试了各种 $timeout/$scope.$apply 解决方案,但它们要么什么都不做,要么通过摘要进行中的错误。任何帮助将不胜感激
【问题讨论】:
-
你在哪里设置了应该更新的东西?您的
MyModel服务是什么样的? -
模型在 plunker 上。带有超时的示例简单地更改了模型,并且该更改会自动传播到指令。
标签: javascript angularjs asynchronous angularjs-directive