2017-07-13 16 views
5

// mẫu tại sao nội suy làm việc bên trong ng-show và không phải bên trong ng-click

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

}); 

Ở đây nó là không trong trường hợp ng-click

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

+2

Nội suy là không cần thiết cho ng-show và bạn không nên kích hoạt sự kiện trên ng-show, vì nó sẽ tăng mức sử dụng bộ nhớ của bạn. Sự kiện chỉ được kích hoạt trên những thứ như ng-click, ng-change, v.v. trong đó bạn không cần bất kỳ nội suy nào vì tất cả đều là chỉ thị góc – Vivz

+0

Tôi nghĩ đó là câu hỏi hay nếu câu hỏi có liên quan với hai cách ràng buộc trong hàm . –

Trả lời

0

Chỉ cần sử dụng mà không có biểu hiện,

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

Vâng, tôi có thể làm điều đó nhưng tại sao tôi không thể làm những gì tôi đang cố gắng như ng-click đơn giản chỉ cần biểu hiện angularjs. –

0

ng-showng-click đã là chỉ thị inbuild trong angularjs. Vì vậy, chúng ta không cần phải đặt nó trong dấu ngoặc nhọn cho những biểu thức này.

Nếu không có bộ điều khiển, chúng tôi thực hiện ngữ cảnh trong chính html. Sử dụng ng-init sử dụng chỉ thị để xác định như là một biến mà bạn thích và ghi đè lên các biến trong ng-click như bạn muốn

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

điều khiển:

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

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

Working Fiddle

+0

xin lỗi nhưng câu hỏi của tôi là tại sao chúng ta không thể thêm nội suy trong biểu thức nếu chúng ta được phép làm điều đó bên trong thuộc tính ng-show? –

+0

Đối với bất cứ điều gì mà chúng ta cần một cách ràng buộc, chúng tôi sẽ sử dụng dấu ngoặc nhọn (nội suy). Nhưng đối với ng-show chỉ thị của nó bằng cách tự nhiên đề cập đến mô hình và do đó không yêu cầu nội suy trên đó. –

0

thử cách này đơn giản

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

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

và bộ điều khiển phải là số e,

var myApp = angular.module('myApp',[]); 
     function MyCtrl($scope) { 
     $scope.isShow= true; 
     $scope.name = 'hallow world!'; 
    } 
Các vấn đề liên quan