我在一个文件中定义了一个名为“$resource”的模块中定义了一组角App.API,因为它是生成的,所以我无法触摸它。(使用loopback-angular,一种从服务器端模型定义生成角度$resource的工具)
让我们以Product依赖项为例,在应用程序的后面,我想重写它的原型,如下所示:
module('App.NewModule', ['App.API']).run(['Product', function(Product) {
Product.prototype.getTitle = function() {
return 'Product name is ' + this.name;
};
// From now on I can use p.getTitle() on every Product $resource
});它起作用了。
问题是,我有许多不同的文件,每个文件都包含模块,而且我遇到了依赖注入问题:我可以在NewModule中访问NewModule函数,但不能在其他模块中访问。
问题:如何覆盖依赖对象原型并将其提供给其他模块?
我尝试用这种方式定义原型函数,认为Product原型将被修改。也许还不够早:
module('App.API').run(['Product', function(Product) {
Product.prototype.getTitle = function() {
return 'Product name is ' + this.name;
};
});它不起作用:在另一个模块中使用getTitle (使用App.API/Product作为依赖项)对Product实例仍然抛出一个undefined is not a function错误,即使正确地注入了Product对象。
发布于 2014-06-05 11:46:41
实际上,我只是搞砸了依赖关系的定义/顺序。
我有三个文件:
app.js用于模块App (依赖于模块App.API)api.js App.APIproduct.js的Product原型正如问题所述,我所做的是:
// in product.js
module('App.API').run(['Product', function(Product) { ... }]);
// in app.js
var appModule = module('App', ['App.API']);但是,App.API模块是在另一个文件中定义的,这有点混乱,因为您永远不知道哪个模块将首先加载,除非在js加载程序中处理并放松并行下载。
因此,我显式地指定了模块和依赖项,而牺牲了在我的应用程序中添加更多的依赖项来声明(但它可以工作并且更稳定):
// in product.js
module('ApiProduct', ['App.API']).run(['Product', function(Product) { ... }]);
// in app.js
var appModule = module('App', ['App.API', 'ApiProduct']);注意:在我的第一次尝试中,我在.config()块中的一个新模块中定义了原型,但是它没有工作,可能是因为App.API服务还没有加载。有了.run(),它就能工作了,我的getTitle原型可以在我需要的Product提供者的任何地方使用。
https://stackoverflow.com/questions/24057077
复制相似问题