为什么插值在ng-show内部工作而不在ng-click内部

时间:2017-07-13 06:10:11

标签: angularjs expression interpolation ng-show

//模板         

      <div ng-controller="myController">
        <input type="text" ng-model="name">
        <p>{{name}}</p>
        <p>{{10+10}}</p>
        <button type="button" ng-click="{{myFunction()}}">click Me !!</button>

        <p ng-show="{{myFunction()}}">The name is {{ name | uppercase }}</p>

      </div>

// Controller

myApp.controller('myController', function ($scope) {

  $scope.name = 'Ranka';
  $scope.myFunction = function(){
    return true;
  };

});

在ng-click

的情况下失败了
  

angular.js:14525错误:[$ parse:syntax]语法错误:从[{myFunction()}开始的表达式[{{myFunction()}}的第2列的令牌'{'无效键}}]

3 个答案:

答案 0 :(得分:0)

在没有表达的情况下使用

<button type="button" ng-click="myFunction()">click Me !!</button>

答案 1 :(得分:0)

ng-showng-click已经是angularjs中的inbuild指令。所以,我们不需要为这些表达式添加大括号。

没有控制器,我们在html本身中执行上下文。使用ng-init指令用于定义您喜欢的变量并根据需要覆盖ng-click中的变量

<div ng-controller="MyCtrl" ng-init="showName = false;">
 <input type="text" ng-model="name">
        <p>{{name}}</p>
        <p>{{10+10}}</p>
        <button type="button" ng-click="showName = true">click Me !!</button>

        <p ng-show="showName">The name is {{ name | uppercase }}</p>
</div>

控制器:

var myApp = angular.module('myApp',[]);

    function MyCtrl($scope) {
       $scope.name = 'Ranka';
    }

Working Fiddle

答案 2 :(得分:0)

尝试这种简单的方法

    <button type="button" ng-click="{{ myFunction(); isShow = false}}">click Me !!</button>

    <p ng-show="{{isShow}}">The name is {{ name | uppercase }}</p>

和控制器应该是,

var myApp = angular.module('myApp',[]);
       function MyCtrl($scope) {
       $scope.isShow= true;
       $scope.name = 'hallow world!';
    }