2015-09-09 154 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

非常感谢你,男人! –