2017-07-13 25 views
5

//模板 为什么插值作品里面NG-节目,而不是内部的NG-点击

 <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单击

angular.js:14525 Error: [$parse:syntax] Syntax Error: Token '{' invalid key at column 2 of the expression [{{myFunction()}}] starting at [{myFunction()}}].

+2

ng-show不需要插值,并且建议不要在ng-show上触发事件,因为它会增加您的内存使用量。应该只触发ng-click,ng-change等事件......你不需要任何插值,因为所有这些都是角度指令 – Vivz

+0

我认为这个问题很好,如果问题与函数中的双向绑定有关。 –

回答

0

没有表达只要使用,

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

是的,我可以做到这一点,但为什么我不能做我想要的ng-click只需要angularjs表达式。 –

0

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

没有控制器,我们在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

+0

对不起,但我的问题是,为什么我们不能在表达式中添加插值,如果我们被允许在ng-show属性中进行呢? –

+0

对于我们需要单向绑定的任何事物,我们将使用大括号(插值)。但是对于ng-show指令,它本质上是指模型,因此不需要那里的内插。 –

0

试试这个简单的方法

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

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

和控制器应该是lik e,

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