2017-07-13 47 views
5

// şablon İşte interpolasyon içeride ng gösterisi çalışıyor ve içeride neden

 <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; 
    }; 

}); 

şu nedenlerden dolayı başarısız olduğunu

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

+2

ng-show için enterpolasyon gerekli değildir ve bellek kullanımını artıracağından ng-show'daki olayları tetiklememeniz tavsiye edilir. Olaylar sadece ng-click, ng-change vb gibi şeyler üzerinde tetiklenmelidir. Tüm bunlar açısal yönergeler olduğu için herhangi bir enterpolasyona ihtiyaç duymazsınız – Vivz

+0

Sorunun işlevin iki yönlü bağlanması ile ilgili bir soru olup olmadığını sormak güzel bir soru. . –

cevap

0

Hemen ifade vermeden kullanmak ng tıklama ng tıklatın

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

Evet, bunu yapabilirim ama neden ng-click olarak denediğimi yapamıyorum, sadece angularjs ifadesi gerektirir. –

0

ng-show ve ng-click zaten İçerisine yerleştirilmiş yönergesi vardır angularjs içinde. Bu yüzden bu ifadeler için kaşlı ayraçlara koymaya gerek yok.

Denetleyici olmadan, içeriği html'nin kendisinde yapıyoruz. Beğendiğiniz bir değişken olarak tanımlamak ng-init direktif kullanımını kullanın ve

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

kontrolör istediğiniz gibi ng-click değişkeni geçersiz:

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

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

Working Fiddle

+0

Üzgünüm ama sorum şu, eğer ng-show özniteliğinin içinde yapmasına izin verilirse, ifadeyi enterpolasyona ekleyemiyoruz? –

+0

Tek yönlü bağlamaya ihtiyacımız olan her şey için kıvırcık parantezler (interpolasyon) kullanacağız. Fakat ng-show yönergesi için, doğası gereği, modele atıfta bulunulur ve bu nedenle orada enterpolasyon gerekli değildir. –

0

bu basit bir yol

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

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

ve denetleyici gibi olmalıdır e,

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