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'}) в списке, когда щелкает добавить кнопку, и он должен обновить список. Когда пользователь нажимает кнопку «Удалить», он удаляет последний элемент и обновляет список.

Update plunker сервер не работает

я сделать скрипку https://jsfiddle.net/8fjhLqnw/

Мне нужно добавить элемент в список, когда кнопка Добавить press..and удалить элемент, когда кнопка удаления прессовой

+0

два решения: 1) создают службы, которые хранят данные. вставьте его в оба контроллера. и редактировать/получать данные из службы каждый раз. служба singleton 2) ваши директивы не имеют изолированной области видимости, поэтому они используют область родительского контроллера. создать переменную в области родительского контроллера и использовать ее в обеих директивах – AlainIb

+0

можете ли вы добавить html, как вы используете эти директивы? – Grundy

+0

gudy .. Я добавил в plunker ..plunker server down ..so Я пытаюсь сделать скрипку – 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 
    } 
}) 

, то вы должны вводить эту-услугу е в своих директивах:

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

Я предоставил u. Просто добавлено было реализовано. Вы можете реализовать delete так же просто, как и abc. –

Смежные вопросы