我正在寻找一种明智的方法来做..在我学习Angular的同时,我有些困惑。
我有服务
.service('Cameras', function(Camera){
var _list = [];
// public API
this.list = _list;
document.body.addEventListener("dbready", function(){
loadCameras(function(result){
for(var i=0; i < result.rows.length; i++)
_list.push(new Camera(result.rows.item(i).name, result.rows.item(i).ip, result.rows.item(i).id));
});
}, false);
})
哪个试图使用这个工厂
.factory('Camera', function(name,ip,id) {
this.name = name;
this.ip = ip;
this.videoFiles = [];
this.photoFiles = [];
this.battery = 0;
this.space = 0;
})
创建Camera对象。
我收到这个错误
[$ injector:unpr]未知提供程序:nameProvider <-名称<-摄像机<-摄像机
我认为这是因为我没有将Camera工厂正确地注入Camera服务中-并且我可能会以错误的方式进行操作-但有人可以让我知道正确的方法吗?
否。您已将Camera声明为Angular服务。
相机服务需要注入服务“名称”,服务“ ip”和服务“ id”。这些服务不存在。
请记住,服务是单例的。他们的工厂可以将其他服务作为参数,但不能将名称,ip或id等数据作为参数:创建唯一的Camera实例时,Angular将从何处获取这些数据?
如果您需要这样的参数来构建相机,那么它根本不应该是一项服务。只是一个常规的JavaScript构造函数。因此,不应将其注入Cameras
服务中。
还要注意,相机对于传递为参数的id不会执行任何操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句