gpt4 book ai didi

javascript - AngularJS Scope.on 和scope.emit 在过滤器中的调用顺序

转载 作者:行者123 更新时间:2023-12-03 10:45:23 24 4
gpt4 key购买 nike

在我的一个过滤器中,会监视在另一个 Controller 中更改的值。根据更新的值,我想决定是否应该调用emit。如下。

scope.$on('XChanged', function(event, x) {
console.error( '==order list has changed : ' + x );
console.warn('INSIDE FILTER ON '+event);

scope.bx = true; // bx variable is initialized in the controller where the filter is called and default is false.
});
console.warn('AFTER FILTER ON 1 >>'+ scope.bx);

if( !scope.bx ){
scope.$emit('handleEmit', {msg: 'RECYCLE' });
console.error( scope.bx+ ' Recycle requested. ');
}

但问题是,scope.on首先被执行,并且在过滤器中并不是从上到下执行的。另外,即使 bx 在scope.on 中设置为 true,if( !scope.bx ) 变为 true,这意味着分配给 bx 的 true 值未设置...可能是我走错路了...你能让我知道我该如何想出这个。我想做的就是,根据scope.on中更改的值,应该执行emit。 (换句话说,bx bool 值在scope.on中改变,bx的更新值应该能够决定是否应该执行emit。)

最佳答案

我认为你需要使用 $watch。

    scope.$on('XChanged', function(event, x) {
console.error( '==order list has changed : ' + x );
console.warn('INSIDE FILTER ON '+event);

scope.bx = true; // bx variable is initialized in the controller where the filter is called and default is false.
});
console.warn('AFTER FILTER ON 1 >>'+ scope.bx);

scope.$watch('bx', function(newVal, oldVal){
if (newVal == oldVal)
return; //shit happens ;-)

if( !scope.bx ){
scope.$emit('handleEmit', {msg: 'RECYCLE' });
console.error( scope.bx+ ' Recycle requested. ');
}

});

关于javascript - AngularJS Scope.on 和scope.emit 在过滤器中的调用顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28582724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com