使用`this。$ watch`代替`$ scope。$ watch`和'Controller As'

马尔库斯

目前,我正在使用Controller As范围控制器格式。

这对于保持视图上的值范围清晰易懂非常有用。

<div ng-app="myApp" ng-controller="myController as myctrl">
    <ul>
        <li ng-repeat="contact in myctrl.contacts">
            <input type="text" ng-model="contact.name.first" />
        </li>
    </ul>
</div>

但是,实现a$watch时遇到了问题,因为它似乎依赖于它,$scope因此以下操作将不起作用。

angular.module('myApp',[])
.controller('myController',['contacts',function(contacts) {
    this.contacts = contacts;

    this.$watch('contacts', function(newValue, oldValue) {
       console.log({older: oldValue, newer:newValue});
    });

}]);

我得到未定义不是一个函数的引用this没有一种方法$watch

有没有办法$watch使用Controller As格式的值

JS小提琴

加尔帕克

即使有controllerAs格式,$scope也可以找到。

实际上controllerAs,是将控制器实例绑定this到$ scope。
例如controller="myController as myctrl"(在幕后):($scope.myctrl = this此处thismyController实例)。

因此,您可以注入$scope手表并将其用于手表:

.controller('myController', function ($scope, contacts) {
    this.contacts = contacts;

    $scope.$watch(function () {
        return contacts;
    }, function (newValue, oldValue) {...});
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在AngularJS中使用$ scope。$ watch和$ scope。$ apply?

$ scope。$ watch和$ watch之间有什么区别?

使用scope。$ watch观察函数何时执行

如何使用angular-fullstack生成器语法处理$ scope和$ watch?

在控制器中使用`this`范围时使用$ scope。$ watch

$ scope。$ watch在Angular中无法在Ionic / Cordova中使用

AngularJS:使用$ scope。$ watch与控制器作为语法

无法弄清楚如何使用$ scope。$ watch

angularjs指令未使用scope。$ watch进行更新

AngularJS FileReader和$ scope。$ watch有问题吗?

$ scope或$ scope。$ watch中的作用域?

$scope.$watch 如何工作

AngularJS $ scope。$ watch对象的属性

$ watch()没有更新$ scope

在$ scope。$ watch上实施延迟

angularJS scope。$ watch整个对象

角$ scope。$ watch newVal!== oldVal

scope。$ watch在AJAX请求后未调用

$ scope变量的更改未触发角$ watch

属性更新时不会触发$ scope。$ watch

AngularJS $ scope。$ watch选择输入的属性ngModel

$ scope。$ watch在jQuery onchange之后不触发?

$ scope。$ watch的最佳做法是什么?

链接函数中的$ scope.watch()

$ location.search()-如何在$ scope。$ watch函数中使用作用域中的参数?

scope.$watch 不使用散列对象(关联数组)触发?

没有$ scope。$ watch的服务和控制器之间的双向绑定。这是不好的做法吗?

我可以在Apple Watch应用中使用图像代替标题吗?

如何使用“ controller as”语法调用$ scope。$ apply()