0

我想尝试http://www.youtube.com/watch?v=HCR7i5F5L8c#t=587中讨论的示例

我包含了 1.0.8 angular js 并尝试过,它抛出了一个错误

参数 'UserCtrl as uCtrl' 不是函数,未定义

所以我认为别名是一个问题,并考虑删除别名并将代码更改为

索引.html

<html ng-app>
<body ng-controller='UserCtrl'>
  Hi <input ng-model='UserCtrl.user.first'>
  <button ng-click='UserCtrl.bye()'>bye</button>
  <script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js'></script>
  <script src='UserControllers.js'></script>
</body>
</html>

用户控制器.js

function UserCtrl() {
  this.user = {
    first:'Larry', 
    last:'Page'
  };
  this.bye = function() { 
    alert('bye:' + this.user.first); 
  };
}

然后上面提到的错误消失了。但是该视频中提到的仍然没有发生。我什至检查了控制台并没有发现任何错误。单击再见按钮时不会发出警报。

我尝试使用 Angular js 1.0.7 和 1.0.8

请帮我找出问题所在。

4

1 回答 1

2

控制器“as”实验功能是在 1.1.5 中添加的,所以你是对的,这导致了问题。

没有“as”,控制器是隐式的,所以你不需要在变量名前加上它。

因此,您可以更新到 1.1.5 或更新版本并坚持使用“as”,或者这里是适用于早期版本 Angular 的代码版本(fiddler 此处:http: //jsfiddle.net/PDqbb/):

<body ng-app ng-controller='UserCtrl'>
  Hi <input ng-model='user.first'>
  <button ng-click='bye()'>bye</button>
</body>


function UserCtrl($scope) {
  $scope.user = {
    first:'Larry', 
    last:'Page'
  };
  $scope.bye = function() { 
    alert('bye:' + this.user.first); 
  };
}

此外,这里有一个关于“as”的很好的概述,其中包括一些关于“this”的使用,因为它适用于这里: http ://www.thinkster.io/pick/GmI3KetKo6/angularjs-experimental-controller-as-syntax

于 2013-11-04T18:44:21.723 回答