gpt4 book ai didi

AngularJs:从指令属性调用函数

转载 作者:行者123 更新时间:2023-12-04 02:39:51 24 4
gpt4 key购买 nike

这看起来很简单,我在某种程度上可以正常工作,但我的解决方案存在一些问题。

场景是我想将函数 (toggleValue()) 传递给指令,然后通过指令模板中的 ngChange 调用该函数。基本设置是:

// html
<div class="my-directive" ng-model="my_model" ng-change="toggleValue()"></div>

// angular directive
myApp.directive('myDirective', function() {
return {
scope: {
restrict: 'C',
model: '=ngModel',
action: '=ngChange'
},
template: '<input type="checkbox" ng-model="model" ng-change="action">'
}
}

这有点过于简化,因为它脱离了上下文,但它展示了我正在尝试做的事情。这也有效。它的问题是它会被多次调用——甚至在它被显式调用之前。这似乎是由于对 Action 的双向绑定(bind)。据我了解,& 应该用于隔离方法,但是当我将操作更改为 '&ngChange' 时,函数 toggleValue() 根本不会被调用。

我尝试将解决方案合并到 Call a controller function from a directive without isolated scope in AngularJS但没有任何成功。使用 $apply() 给我一个 $digest 错误,使用 $eval() 没有响应。

link: function (scope, element, attrs) {
scope.$eval(attrs.action);
}

最佳答案

要传递函数,您需要在作用域定义中使用& 而不是=:

action: '&ngChange'

然后你需要调用指令模板中的 Action :

ng-change="action()"

关于AngularJs:从指令属性调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20124384/

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