2016-03-05 5 views
0

У меня есть объект в контроллереУгловая часы директива не работает

$scope._id = '12345'; 
$scope.messages = { 
    '12345': [ 
     { 
     author: 'Vasya', 
     message: 'Message from Vasya' 
     }, 
     { 
      author: 'Bob', 
      message: 'Message from Bob' 
     }] 
}; 

Html тег:

<div message-list="{{_id}}")></div> 

Моя директива:

var App = angular.module('app', []) 
.directive("messageList", function() { 
    return { 
     link: function(scope,element,attrs) {   
      scope.$watch('messages[attrs.messageList]', function(newVal,oldVal) { 
       if (newVal!==oldVal) 
       { 
        console.log("newVal",newVal); 
        console.log("oldVal",oldVal); 
       } 
      },true); 
     } 
    } 
}); 

Но часы не работает, когда я вставить новый элемент в массив $ scope.messages ['12345'].

+0

если я прав область, которую вы пытаетесь смотреть является «директива сфера» и не связана с областью контроллера, где объект " сообщений ". попробуйте посмотреть его прямо в контроллере или использовать корнеплод. $ rootScope. $ Watch ($ rootScope.messages) – icchio

ответ

0

Вот plunkr. Откройте консоль, просматривая плункер, чтобы увидеть изменения.

Вам потребуется $watch на messages объекта:

scope.$watch('messages', function(newVal,oldVal) { 
    if (newVal!==oldVal) 
    { 
     console.log("newVal",newVal); 
     console.log("oldVal",oldVal); 
    } 
},true); 
Смежные вопросы