2017-01-03 5 views
0

Здравствуйте, у меня есть небольшая проблема, когда я обновляю атрибут моего массива объектов в родительском контроллере.

$ scope.items содержит массив объектов.

$scope.items = Ticket.items; 

$scope.$watchCollection('items', function() { 
    console.log("xxxx"); 
}); 

Теперь в другом контроллере контроллера. Я зацикливание thrue в Ticket.items (кстати Билет это услуга, которая имеет имя свойства элементов, что является массивом Objet)

Ticket.items.forEach(function (item) { 
    item.qty = 55; 
}); 

Теперь проблема заключается в том, что я обновляю свойство элемента из Ticket.items и $ watchCollection не выполняется. Он выполняется только тогда, когда я нажимаю что-то в массив Ticket.items.

ответ

1

Просто добавьте параметр true на часы, чтобы отслеживать глубокие свойства

$scope.$watch('items', function() { 
    console.log("xxxx"); 
},true); 
+0

Да я попробовал, что это не работает. – user3862830

+0

Ну $ scope. $ WatchCollection ('items', function() { console.log ("xxxx"); }, true); но $ scope. $$ watch ('items', function() { console.log ("xxxx"); }, true); работает отлично. – user3862830

+0

Вы пытаетесь смотреть вместо watchCollection? –

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