我在两个元素中调用了一个函数。当我触发该函数一个on-click事件时,它也应再次被命中,无论我在哪里调用该函数。
// HTML
<button type="button" ng-click="{{myFunction()}}">click Me !!</button>
<p ng-show="{{myFunction()}}">{{name}}</p>
//控制器
myApp.controller('myController', function ($scope) {
$scope.name = 'Helow World!';
$scope.myFunction = function(){
return true;
};
});
我还尝试使用""
代替{{}}
进行双向绑定
<button type="button" ng-click="myFunction()">click Me !!</button>
<p ng-show="myFunction()">{{name}}</p>
该功能只会触发一次。显示我的p
标记未显示。
我可以使用范围对象Show|hide
p
标记。但这不是我的问题。
我的问题是,如何实现event(ng-click)
的双向绑定与angularjs中的ng-repeat,ng-model,mg-show,etc
之类的工作相同?
答案 0 :(得分:3)
你正在犯这个错误。
角度指令适用于角度表达式,这意味着无论您插入到角度表达式中, ng-show
是使用$parse(expr)($scope)
执行的 - 这是短版本。因此,如果表达式包含函数调用,则只要指令决定执行表达式,就会调用该函数。在ng-show
的情况下,这发生在每个摘要周期。如果ng-click
发生在click事件上。
因此,当您使用这样的代码时:ng-show="myFunc()"
并且您的函数定义如下:
$scope.myFunc = function() { return true; };
然后在每个摘要上执行此函数并将true
返回到ng-show。它与ng-click
指令中发生的事情没有任何关系。
您所要求的不能完成。 Angular并没有这样做。您使用
说明的解决方案我可以使用范围对象来显示|隐藏p标签。但这不是我的问题。
是您最好的选择。