2017-07-13 24 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!'; 
    } 
相關問題