我在Ajax响应函数中设置了$scope
的值。
$http.post('/aUrl', someData)
.then(function(response) {
$scope.value = response.data;
});
这意味着在undefined
回调运行之前它是.then
。
我想在自定义指令中使用此值,如下所示:
myModule.directive('myDirective', function() {
return {
scope: {
value: '='
},
link: function(scope, element, attributes) {
// do stuff with scope.value...
}
};
});
在模板中:
<div my-directive value="value"></div>
但是,当链接功能运行时,该值仍为undefined
。
处理这个问题的正确方法是什么?
答案 0 :(得分:0)
您可以观看更改的值:
attributes.$observe('value', function (val) {
if (val) {
}
});
答案 1 :(得分:0)
实现此目标的最安全的解决方案是在服务中共享数据。我创造了一个用来演示的傻瓜。
myAppModule.factory("pollingService", function ($http, $timeout, $q) {
var svc = this;
svc.data = { resp: {}, count: 0};
svc.count = 0;
svc.poller = function() {
svc.count++;
return $http.get('data.json').then(function(r) {
svc.data.count=svc.count;
//console.log(data);
$timeout(svc.poller, 4500);
});
};
return svc;
});
http://plnkr.co/edit/RVz7ru?p=preview
但是,有很多方法可以实现您的目标,我强烈建议您在使用Angular时遵循本指南。它将保持您的代码清洁,并准备轻松移植到Angular 2。 https://github.com/johnpapa/angular-styleguide