0

我在两个元素中调用了一个函数。当我触发该函数时,单击事件也应该再次被击中,无论我在哪里调用该函数。

//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|hidep标签使用范围对象。但这不是我的问题。

问题

我的问题是,如何实现与angularjsevent(ng-click)相同的双向绑定?ng-repeat,ng-model,mg-show,etc

4

1 回答 1

3

你这是错的。

角度指令与角度表达式一起使用,这意味着您插入的任何内容都将ng-show使用$parse(expr)($scope)- 这是简短版本。因此,如果您的表达式包含函数调用,则只要指令决定执行表达式,就会调用该函数。在 的情况下ng-show,每个摘要周期都会发生这种情况。在这种情况下ng-click发生在点击事件上。

因此,当您使用这样的代码时:ng-show="myFunc()"并且您的函数定义如下:

$scope.myFunc = function() { return true; };

然后在每个摘要上,执行此函数并返回true到 ng-show。ng-click它与指令中发生的事情没有任何关系。

你所要求的无法完成。Angular 不能那样工作。您陈述的解决方案

我可以使用范围对象来显示|隐藏 p 标签。但这不是我的问题。

是您最好也是唯一的选择。

于 2017-07-13T07:15:44.920 回答