如何在角度js中添加项目数组?

问题描述:

我想做两个指令沟通。我有两个指令:一个是表指令,另一个是标题指令。 在标题上我有两个按钮“加”删除。我想在点击添加按钮时在列表中添加一个元素,并在用户单击删除按钮时删除该元素。如何在角度js中添加项目数组?

但是这个列表是一个不同的指令,我如何在删除和添加动作后更新数组?

Here是我的代码。

.directive('tm',function(){ 
    return { 
     restrict: 'E', 
     templateUrl: 'login.html', 
     scope: { 
     }, 
     controller: 'f', 
     controllerAs: 'vm' 

    }; 
}) 

.controller('f',function($http, $scope){   
    var vm = this; 
    $http.get('data.json').success(function(data){ 
     vm.data = data; 
    })  
}) 

.controller('abc',function($http, $scope){ 

}) 

.directive('h',function(){ 
    return { 
     restrict: 'E', 
     templateUrl: 'header.html', 
     scope: { 
     }, 
     controller: 'he', 
     controllerAs: 'h' 

    }; 
}) 

.controller('he',function($http, $scope){ 
    var h =this; 
    h.add=function(){ 
     alert('heelo') 
    } 

    h.delete=function(){ 
     alert('delete') 
    } 

}) 

我需要用户按在列表中的默认值({name: 'abc', lastname: 'pqr'})当点击添加按钮,它应该更新列表。当用户点击删除时,它删除最后一个元素并更新列表。

更新plunker服务器运行的不是

我做小提琴 https://jsfiddle.net/8fjhLqnw/

我需要在列表中添加一个项目时添加按钮是press..and删除一个项目时,删除按钮是按

+0

两种解决方案: 1)谁创建存储数据的服务。注入两个控制器。并且每次都从服务中编辑/获取数据。该服务是单例 2)您的指令没有隔离范围,因此它们使用父控制器范围。在父控制器范围中创建一个变量,并在两个指令中使用它 – AlainIb

+0

你可以添加html如何使用这个指令? – Grundy

+0

gudy ..我加入plunker ..plunker服务器down ..所以我试图让小提琴 – user944513

首先创建服务共享这样的数据和功能:

service('sharedData', function(){ 
    var vm = this; 
    vm.list = []; 
    vm.add=function(item){ 
     vm.list.push(item); 
    } 

    vm.get = function(){ 
     $http.get('data.json').success(function(data){ 
      vm.data = data; 
     }) 
    } 
    vm.delete=function(item){ 
     // use slice for delete object from list 
    } 
}) 

然后你必须注入这个服务E在你的指令:

controller('he', function($http, $scope, sharedData) 

,并使用sharedData在你的函数:

h.add=function(item){ 
    sharedData.add(item) 
} 

Here is code

+0

它自动反映? – user944513

+0

请提供小提琴https://jsfiddle.net/8fjhLqnw/ – user944513

+0

我提供了你。只需添加即可实施。您可以像abc一样简单地实现删除。 –