我从列表中删除了一个项目,同样的项目也从AngularJs中的另一个列表中删除

时间:2018-04-15 08:00:54

标签: javascript

我有两个清单。他们两个都充满了我的服务。我的服务是这样的:

我的服务:

 `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天。它没有解决。

1 个答案:

答案 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混淆的核心。祝你好运!