angularjs 中 ng-click 指令的两种绑定方式
Two way binding for ng-click directive in angularjs
我在两个元素中调用了一个函数。当我触发一个点击事件的函数时,无论我在哪里调用该函数,它都应该被再次点击。
//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
一样?
你想错了。
angular 指令与 angular 表达式一起使用,这意味着无论您插入什么,例如ng-show
使用 $parse(expr)($scope)
执行 - 这是简短版本。因此,如果您的表达式包含函数调用,则只要指令决定执行该表达式,就会调用该函数。在 ng-show
的情况下,每个摘要周期都会发生这种情况。在 ng-click
的情况下发生在点击事件上。
所以当您使用这样的代码时:ng-show="myFunc()"
并且您的函数定义如下:
$scope.myFunc = function() { return true; };
然后在每个摘要上执行此函数,然后 returns true
到 ng-show。它与 ng-click
指令中发生的事情没有任何关系。
您所要求的无法完成。 Angular 只是行不通。您用
陈述的解决方案
I can use a scope object to Show|hide the p tag. But that's not my question.
是您最好且唯一的选择。
我在两个元素中调用了一个函数。当我触发一个点击事件的函数时,无论我在哪里调用该函数,它都应该被再次点击。
//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
一样?
你想错了。
angular 指令与 angular 表达式一起使用,这意味着无论您插入什么,例如ng-show
使用 $parse(expr)($scope)
执行 - 这是简短版本。因此,如果您的表达式包含函数调用,则只要指令决定执行该表达式,就会调用该函数。在 ng-show
的情况下,每个摘要周期都会发生这种情况。在 ng-click
的情况下发生在点击事件上。
所以当您使用这样的代码时:ng-show="myFunc()"
并且您的函数定义如下:
$scope.myFunc = function() { return true; };
然后在每个摘要上执行此函数,然后 returns true
到 ng-show。它与 ng-click
指令中发生的事情没有任何关系。
您所要求的无法完成。 Angular 只是行不通。您用
陈述的解决方案I can use a scope object to Show|hide the p tag. But that's not my question.
是您最好且唯一的选择。