2

我想做兩個指令溝通。我有兩個指令:一個是表指令,另一個是標題指令。 在標題上我有兩個按鈕「加」刪除。我想在點擊添加按鈕時在列表中添加一個元素,並在用戶單擊刪除按鈕時刪除該元素。如何在角度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

回答

3

首先創建服務共享這樣的數據和功能:

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一樣簡單地實現刪除。 –