2015-09-09 136 views
0

學習AngularJS。嘗試從教程中更改示例。需要ng-init值等於腳本函數傳輸的值。如何做到這一點?代碼如下:角ng鍵單擊

<html> 
    <body> 
     <h2>AngularJS Sample Application</h2> 
     <div ng-app="mainApp" ng-controller="clickController"> 
      <p>Total click: {{ click.clickCounter() }}</p> 
      <button ng-click="count = count+1" 
       ng-init="count=click.clickCounter()">Click Me!</button> 
     </div> 
     <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> 
     </script> 
    </body> 

    <script> 
     var mainApp = angular.module("mainApp", []); 

     mainApp.controller('clickController', function($scope) { 
      $scope.click = { 
       count: 15, 
       clickCounter: function() { 
        var foo; 
        foo = $scope.click; 
        return foo.count; 
       } 
      }; 
     }); 
    </script> 
</html> 

問題是將click.clickCounter()的值傳遞給ng-click。

+0

這是什麼代碼,應該怎麼辦? –

回答

4

你的問題是你正在你的範圍的根上創建一個新的count變量。

如果您的計數值爲$scope.click.count但是ng-init ang ng-click正在創建和更新$scope.count

這能解決問題

<button ng-click = "click.count = click.count+1" ng-init="click.count=click.clickCounter()">Click Me!</button> 

編輯:如果您添加{{count}}您的應用程序裏面,你會看到它正在創建的範圍變量。 Angular的雙刃劍之一就是如果你在你的視圖中定義了不存在於你的範圍內的變量,Angular會創建並將它們添加到你的範圍中。

編輯2:您的ng-init已過時。看到你已經創建了$scope.click對象的count屬性,它已經被初始化並且有一個值。

另見琴: http://jsfiddle.net/yjwskkat/

+1

非常感謝你,男人! –