为什么我的$ watch函数返回undefined?

时间:2015-10-14 18:09:16

标签: javascript angularjs angularjs-service watch angularjs-watch

这是我的手表功能,下面......它正在我的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;
}

enter image description here

我如何在这里使用$watch服务错误?

1 个答案:

答案 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>

如果您需要在异步调用完成后执行某些特定操作 - 最好提供回调函数。