Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 订阅AngularJS中的属性更改_Javascript_Angularjs - Fatal编程技术网

Javascript 订阅AngularJS中的属性更改

Javascript 订阅AngularJS中的属性更改,javascript,angularjs,Javascript,Angularjs,在knockoutJS中,可以订阅viewmodel属性的更改,例如: myViewModel.personName.subscribe(function(newValue) { alert("The person's new name is " + newValue); }); 我目前正在学习AngularJS,我想知道在AngularJS中是否有类似的东西?我尝试过搜索这个,但没有任何运气。您可以使用$watch检查scope对象的属性何时更改 AngularJS中的对象有一个名为

在knockoutJS中,可以订阅viewmodel属性的更改,例如:

myViewModel.personName.subscribe(function(newValue) {
    alert("The person's new name is " + newValue);
});

我目前正在学习AngularJS,我想知道在AngularJS中是否有类似的东西?我尝试过搜索这个,但没有任何运气。

您可以使用$watch检查scope对象的属性何时更改

AngularJS中的对象有一个名为
$watch
的特殊方法,用于“监视”范围属性

它接受一个回调,该回调接收模型的新值和旧值:

$scope.$watch('modelName', function(newValue, oldValue){
    // Do anything you like here
});
回调是在初始化和每次模型更改时进行的。因此,最好添加一个额外的相等性检查,如下所示:

$scope.$watch('modelName', function(newValue, oldValue){

    // Check if value has changes
    if(newValue === oldValue){
        return;
    }

    // Do anything you like here
});
$scope.$watch('modelName', function(newValue, oldValue){
    // Do anything you like here
}, true); // Add extra 'true' parameter to check for object equality
这允许您“观察”您的模型,并在需要时执行一些操作

另外一句话:如果你正在观察一个包含对象的模型,你应该使用额外的第三个参数,告诉AngularJS通过对象相等而不是引用来比较这两个值(因为引用不会改变,因此不会触发观察者),如下所示:

$scope.$watch('modelName', function(newValue, oldValue){

    // Check if value has changes
    if(newValue === oldValue){
        return;
    }

    // Do anything you like here
});
$scope.$watch('modelName', function(newValue, oldValue){
    // Do anything you like here
}, true); // Add extra 'true' parameter to check for object equality
您可以在页面上阅读更多文档


希望有帮助

对于由用户操作或应用程序事件触发的API调用和异步数据,最好使用

$rootScope.$broadcast('updateSearch', value);
直接在服务函数的回调中,并在控制器中利用它,如:

$scope.$on('updateSearch', function(event,value) {
  $scope.search = value;
});

这就是观察物在Angular2中的工作方式