Angularjs在$ routeProvider的决心之后添加$ scope。$ watch

时间:2014-03-19 20:06:32

标签: angularjs web angularjs-scope angularjs-routing

我遇到了一个问题,我决定在完成解决后从我的示波器中查看某个元素。出于某种原因,当我从这个片段中运行第二行时它会运行,我似乎无法在“解析”期间添加此$ watch。

我理解承诺是异步的,但我怎么知道我的决心何时完成然后添加手表呢?

可以通过代码或UI更改variableToWatch(否则我只会使用ng-change =“doWork()”)

    $scope.variableToWatch = $route.current.locals.data.initialValue;
    $scope.listOfDependantData = $route.current.locals.data.items;

    $scope.$watch('variableToWatch', function (newValue) {
        myService.getNewDependantData(newValue).$promise.then(
            function (items) {
                $scope.listOfDependantData = items;
            }
        );
    };

1 个答案:

答案 0 :(得分:1)

<强>更新

如果您只想在初始设置值后更改时运行代码,则可以使用watchFunc的第二种形式作为第二个参数传递给{{1 }}:

$scope.$watch

我没有完全遵循这个问题,但我怀疑你想看$scope.$watch('variableToWatch', function (newValue, oldValue) { if (typeof newValue !== 'undefined' && newValue !== oldValue) { // Use the new value here ... } }); 而不是$route.current.locals.data.initialValue的价值?

在这种情况下,您可以使用$scope.varibleToWatch的替代形式和$scope.$watch作为第一个参数:

function

或者,如果你想观察$scope.$watch(function () { return $route.current.local.data.intialValue; }, function (newValue) { // ... }; $scope所包含的sting所引用的变量,那么你可以使用它:

$route.current.local.data.initialValue

这会解决您的问题吗?