这是我的手表功能,下面......它正在我的ViewFactory中观看一个功能。
// Watch for when tagsFilterModal is showing:
vs.$watch('ViewFactory.retrieveSavedViews()', function(newVal) {
console.log("New Data", newVal);
});
retrieveSavedViews()
函数调用API并返回数据:
function retrieveSavedViews() {
console.log('retrieveSavedViews called...');
ApiFactory.getViews().then(function(data) {
if (data.data.status === 'Success') {
// Store views locally:
return storeSavedViews(data.data.views);
// Populate load view dropdown:
}
});
}
^你可以在上面看到我返回另一个函数storeSavedViews()
:
function storeSavedViews(data) {
savedViews = data;
console.log('storeSavedViews savedViews',savedViews);
return savedViews;
}
我如何在这里使用$watch
服务错误?
答案 0 :(得分:0)
我建议你 - 几乎从不使用$ watch功能。因为那时函数将在每个摘要周期中启动。 Look this example
有简单的$scope.$watch('test()')
,如果我更改了另一个范围变量而您无法控制,那么您会看到test()
启动。
你应该做的是存储对象的承诺:$scope.object = Service.get()
并观察它。
通常,您可以将观察者创建保留为角度,只需使用html:
<div ng-if="!object.$resolved">Retrieving data...
</div>
<div ng-if="object.$resolved">Got data {{object}}
</div>
如果您需要在异步调用完成后执行某些特定操作 - 最好提供回调函数。