AngularJS服务中的Javascript模块模式不工作
我在angularJS服务中使用以下代码来完成一些任务:AngularJS服务中的Javascript模块模式不工作,javascript,angularjs,angular-services,revealing-module-pattern,Javascript,Angularjs,Angular Services,Revealing Module Pattern,我在angularJS服务中使用以下代码来完成一些任务: angular.factory('promiseFactory', function(){ var artistIds = []; function setArtistIds(artistIds){ artistIds = artistIds; } return { createPromiseForNotification: promiseFactory,
angular.factory('promiseFactory', function(){
var artistIds = [];
function setArtistIds(artistIds){
artistIds = artistIds;
}
return {
createPromiseForNotification: promiseFactory,
getNotis: getNotis,
setNotis : setNotis,
//setArtistIds : setArtistIds,
artistIds : artistIds
}
});
此工厂用于另一个factory notifications.js中,我试图在其中设置
promiseFactory.artistIds = [1,2,3];
在一些ajax调用中,当我在promiseFactory的任何函数中使用artistIds变量时,结果是空数组[](初始值)。为什么?
好的,其次,当我使用一个名为setArtistIds的函数来实现同样的事情时,这一点是有效的,但即使这样,我也必须做类似的事情
function setArtistIds(i){ // Right
artistIds = i;
}
但不是当我这样做的时候:
function setArtistIds(artistIds){ // Wrong
artistIds = artistIds;
}
有人能解释一下我做错了什么吗
artistIds
为了修复此错误,请将getter和setter添加到工厂
angular.factory('promiseFactory', function(){
var artistIds = [];
function setArtistIds(newArtistIds){
artistIds = newArtistIds;
}
function getArtistIds(){
return artistIds;
}
return {
createPromiseForNotification: promiseFactory,
getNotis: getNotis,
setNotis : setNotis,
setArtistIds : setArtistIds,
getArtistIds : getArtistIds,
}
});
是否有方法访问与参数名同名的外部范围变量。函数setArtistIds(artistIds){artistIds=artistIds;}@ParamSingh短答案是否定的。只需让代码看起来干净,不要使用相同的名称。