Angular.js: Function.prototype.bind.apply(...) 不是构造函数

创建于 2016-06-22  ·  2评论  ·  资料来源: angular/angular.js

我正在尝试学习 angular-tdd

使用这个版本我的测试工作正常
依赖版本
角度:1.4.8
角度模拟:1.4.8
节点:v4.4.5
业力cli:0.13.22

但是当我使用
版本
“角度”:“^1.5.7”
“角度模拟”:“^1.5.7”

它抛出一个错误

karma start karma.conf.js

22 06 2016 16:53:04.002:WARN [karma]: No captured browser, open http://localhost:9876/
22 06 2016 16:53:04.012:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/
22 06 2016 16:53:04.018:INFO [launcher]: Starting browser Chrome
22 06 2016 16:53:05.959:INFO [Chrome 51.0.2704 (Linux 0.0.0)]: Connected on socket /#Vfy_Fpt6BZ2INRyEAAAA with id 36097936
Chrome 51.0.2704 (Linux 0.0.0) calculator sum 1 + 1 should equal 2 FAILED
    TypeError: Function.prototype.bind.apply(...) is not a constructor
        at Object.instantiate (/home/malanay/workspace/AngularJs-BDD-101/node_modules/angular/angular.min.js:41:477)
        at /home/kiro112/workspace/AngularJs-BDD-101/node_modules/angular/angular.min.js:90:3
        at /home/kiro112/workspace/AngularJs-BDD-101/node_modules/angular-mocks/angular-mocks.js:2214:12
        at Object.it (/home/kiro112/workspace/AngularJs-BDD-101/tests/calculator.controller.test.js:17:21)
Chrome 51.0.2704 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) (0 secs / 0.027 Chrome 51.0.2704 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.037 secs / 0.027 secs)
invalid

最有用的评论

问题是使用粗箭头语法来定义控制器类的函数构造函数。 假设作为第二个参数传递给 module.controller 的函数是Foo ,Angular 将调用new Foo(...) ,这在 ES6 中的粗箭头语法中是非法的。

所有2条评论

问题是使用粗箭头语法来定义控制器类的函数构造函数。 假设作为第二个参数传递给 module.controller 的函数是Foo ,Angular 将调用new Foo(...) ,这在 ES6 中的粗箭头语法中是非法的。

@wesleycho是对的。 控制器应该是可实例化的(即用new调用),所以像箭头函数( () => {...} )和速记对象方法( {someMethod() {...}} )不适合控制器。

有关更多详细信息,请参阅https://github.com/angular/angular.js/issues/14766#issuecomment -226005516。

此页面是否有帮助?
0 / 5 - 0 等级