我有两个清单。他们两个都充满了我的服务。我的服务是这样的:
我的服务:
`function data (){
var locationList={
list: ''
}
var currentlocation = {
editList : ''
}
return {
getAllLocationList:function(){
return locationList.list;
},
setAllLocationList:function(allLocationList){
locationList.list = allLocationList;
},
getCurrentList:function(){
return currentlocation.editList;
},
setCurrentList:function(currentList){
currentlocation.editList = currentList;
},
}
}`
在我的控制器中,
vm.location=data.getCurrentList();
vm.allLocationList=data.getAllLocationList();
vm.location包含id,name,keywords,number和 vm.allLocationList包含名称,关键字,数字
我还有keywordAdd和keywordDelete函数。当我输入keywordDelete函数时,当我从vm.location
列表中删除一些关键字时,自动从vm.allLocationList
删除相同的项目。相同的情况对keywordAdd函数有效。你有什么想法吗?也许,服务结构不好。我是第一次写这篇文章。
我已经工作了2天。它没有解决。
答案 0 :(得分:1)
所以这是关于Javascript execution context。创建函数时,其中的变量属于它的上下文。这意味着它们对于data()
的每个实例都是相似的。
Javascript(我认为ES5)支持面向对象的编程,让你创建一个对象,然后创建多个(半)单独的实例。
function Data() {
this.locationList={
list: ''
}
this.currentlocation = {
editList : ''
}
}
Data.prototype = {
getAllLocationList:function(){
return this.locationList.list;
},
setAllLocationList:function(allLocationList){
this.locationList.list = allLocationList;
},
getCurrentList:function(){
return this.currentlocation.editList;
},
setCurrentList:function(currentList){
this.currentlocation.editList = currentList;
},
}
var data = new Data();
我强烈建议您进一步阅读此主题。它是许多JS混淆的核心。祝你好运!