Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 如何在不使用$watch的情况下更新范围值_Javascript_Angularjs - Fatal编程技术网

Javascript 如何在不使用$watch的情况下更新范围值

Javascript 如何在不使用$watch的情况下更新范围值,javascript,angularjs,Javascript,Angularjs,我使用自定义指令 <users stats="stats"></users> 所以,在指令控制器中,我在做一些func。像 app.controller("userStatsCtrl", function($scope){ $scope.$watch('stats', function(newValue) { if (angular.isDefined(newValue)) { ..... } }); }) 所以

我使用自定义指令

<users stats="stats"></users>
所以,在指令控制器中,我在做一些func。像

app.controller("userStatsCtrl", function($scope){
    $scope.$watch('stats', function(newValue) {
      if (angular.isDefined(newValue)) {
        .....
      }
    });
})
所以在这里,我使用$watch来监听范围,如果它是更新的,我将执行一些操作

我的问题是,我不想用watch来听scope,如果scope得到更新,我需要执行一些操作

因此,如何在不使用scope的情况下更新scope值。$watch

当主控制器中的“scope.stats”值发生更改时,您可以广播一个事件,并在指令中接收相同的事件,并根据需要执行操作。 广播事件的示例代码:

$scope.$broadcast('yourEventName');
接收指令中的事件:

$scope.$on('yourEventName', function(){

});
当主控制器中的“scope.stats”值发生更改时,您可以广播一个事件,并在指令中接收相同的事件,然后执行任何您想要的操作。 广播事件的示例代码:

$scope.$broadcast('yourEventName');
接收指令中的事件:

$scope.$on('yourEventName', function(){

});
试一试怎么样:

<users stats="stats" ng-change="onUserStatChange($event)"></users> 
                           or
<users stats="stats" ng-blur="onUserStatChange($event)"></users>
试一试怎么样:

<users stats="stats" ng-change="onUserStatChange($event)"></users> 
                           or
<users stats="stats" ng-blur="onUserStatChange($event)"></users>

为什么不使用
$watch
?它将影响整个范围对象。但是,这里特定的物体只会改变。性能标准。最好使用$watch,除非你有很多,否则你不会有任何性能问题。此外,如果您想查看对象中更精确的内容,请选择$scope.$watch{function(){return stats.a},function(newValue){[process…]});为什么不使用
$watch
?它会影响整个作用域对象。但是,在这里,特定的对象只会改变。性能标准。最好使用$watch,除非你有很多这样的对象,否则你不会有任何性能问题。此外,如果你想观察对象中更精确的内容,请选择$scope。$watch{function(){return stats.a},function(newValue){[process…]});作用域不更新。如果我在该作用域上更新,则不影响此处。当页面加载时,仅来自作用域的时间数据不更新。如果我在该作用域上更新,则不影响此处。当页面加载时,仅来自作用域的时间数据,如果我使用ng change=“onUserStatChange($event)”,我得到错误:[$compile:ctreq]如果你使用ng更改,你必须同时使用ng模型。如果我使用ng change=“onUserStatChange($event)”,我得到错误:[$compile:ctreq]如果你使用ng更改,你必须同时使用ng模型。