我的应用中有以下代码:
app.factory('User', ['railsResourceFactory', '$http', function (railsResourceFactory, $http) {
var res = railsResourceFactory({url: '/users', name: 'user'});
res.prototype.hello = function () {
return "hello";
};
debugger;
return res;
}]);
我正在使用angularjs-rails-resource gem。当我在chrome中调试调试器时,我在控制台中键入以下内容:
res.hello()
我明白了:
TypeError: Object function RailsResource(value) { angular.extend(this, value || {}); } has no method 'hello'
我不确定为什么会这样。我是一些新的JavaScript,所以我可能不会从根本上理解Prototype的一些东西。或者它可能是角度或轨道的问题。
由于
答案 0 :(得分:0)
原型属性仅适用于函数..问自己的第一个基本问题是,
railsResourceFactory({url: '/users', name: 'user'});
返回一个函数/构造函数?不,不是的。它返回一个资源对象。如果你来自一个经典的OOP语言,我们只要说prototype属性只对类有用而在对象中不可用。如果你仍然希望能够访问你当前正在处理的对象的原型,你可以访问通过调用
object.constructor.prototype
所以你可以通过调用
来实现你想要实现的目标res.constructor.prototype.hello= function () {
return "hello";
};