Coo*_*per 2 javascript angularjs
我试图使用种子应用程序使用angular.js站起来.
当浏览器执行我的控制器时,我收到以下错误:
TypeError: Cannot set property 'players' of undefined
at new bankC (http://localhost:8888/monopoly/js/controllers.js:18:20)
at invoke (http://localhost:8888/monopoly/lib/angular/angular.js:2795:28)
at Object.instantiate (http://localhost:8888/monopoly/lib/angular/angular.js:2805:23)
at http://localhost:8888/monopoly/lib/angular/angular.js:4620:24
at update (http://localhost:8888/monopoly/lib/angular/angular.js:13692:26)
at http://localhost:8888/monopoly/lib/angular/angular.js:8002:24
at Array.forEach (native)
at forEach (http://localhost:8888/monopoly/lib/angular/angular.js:110:11)
at Object.Scope.$broadcast (http://localhost:8888/monopoly/lib/angular/angular.js:8000:11)
at http://localhost:8888/monopoly/lib/angular/angular.js:7185:26
Run Code Online (Sandbox Code Playgroud)
这是控制器代码,它是controller.js文件
function bankC($scope) {
$scope.players = [
{
id: 0,
name: "Playe1",
balance: 1500
},
{
id: 1,
name: "Player2",
balance: 1500
},
{
id: 2,
name: "Player 3",
balance: 1500
}
];
}
bankC.$inject = [];
Run Code Online (Sandbox Code Playgroud)
谢谢
编辑:
它在角度js上注册,在某个"页面"上使用
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives']).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/view1', {templateUrl: 'partials/partial1.html', controller: MyCtrl1});
$routeProvider.when('/view2', {templateUrl: 'partials/partial2.html', controller: MyCtrl2});
$routeProvider.when('/bank', {templateUrl: 'partials/bank.html', controller: bankC});
$routeProvider.otherwise({redirectTo: '/bank'});
}]);
Run Code Online (Sandbox Code Playgroud)
EDIT2:
删除"bankC.$ inject = [];" 从控制器文件解决了问题,为什么angular.js种子应用程序包含它?
由于最后一行,您收到了该错误
bankC.$inject = [];
Run Code Online (Sandbox Code Playgroud)
这告诉角度注入器在控制器寻找$ scope时不向控制器注入任何东西.
如果你改成这个
bankC.$inject = ['$scope'];
Run Code Online (Sandbox Code Playgroud)
它应该工作正常.
最后一行存在是因为angular使用Dependancy Injection.当您在控制器中请求变量时,Angular会查找名为$ scope的变量.但是如果代码被缩小,那么混淆将把范围的名称改为其他东西.为了在发生这种情况时保持理智,引入最后一行.当您声明一个新的控制器时,最佳做法是将最后一行包含您希望角度DI注入该控制器的所有变量.
注意:如果您有兴趣将更多东西注入该控制器(或类似的控制器),那么您将不得不更新bankC.$ inject.
| 归档时间: |
|
| 查看次数: |
6018 次 |
| 最近记录: |