gpt4 book ai didi

javascript - Angular Directive(指令),与 bool 值的双向数据绑定(bind)只能工作一次

转载 作者:行者123 更新时间:2023-11-28 17:54:52 24 4
gpt4 key购买 nike

尝试测试一个简单的指令,如果传递的值为 true,该指令将运行,但它只能运行一次。

指令:

.directive('myDirective', function(){
return {
restrict: 'A',
scope: {
triggerObj: '@myDirective'
},
link: function (scope, elem, attrs) {
scope.$watch('triggerObj', function() {
alert('success')
});
}
};
})

Controller :

$scope.triggerObj = {};
$scope.triggerObj.trigger = false;

$scope.passValue = function(){
//set to true
$scope.triggerObj.trigger = true;
}

查看:

<div my-directive='{[triggerObj.trigger]}'>
<button type='button' ng-click='passValue()'>click</button>

还尝试在设置为 true 之前将值重置为 false,但仍然只能工作一次。

最佳答案

它只起作用,因为 passValue() 函数将 $scope.triggerObj.trigger 设置为 true。并且您的 $watch 仅当旧值不等于新值时才起作用,但您首先将 $scope.triggerObj.triggerfalse 更改到 true,而所有其他时间都没有任何变化(您只是试图将 $scope.triggerObj.triggertrue 更改为 true 再次)。

要实现这一点,请尝试将 $scope.passValue 函数升级为:

$scope.passValue = function() {
if($scope.triggerObj.trigger) {
$scope.triggerObj.trigger = false;
} else {
$scope.triggerObj.trigger = true;
}
}

关于javascript - Angular Directive(指令),与 bool 值的双向数据绑定(bind)只能工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44697742/

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