2013-07-23 4 views
0

пытается сделать что-то простое здесь.

В моем контроллере:

$scope.testObject = { name : 'john' }; 

    $scope.$watch('$scope.testObject.name', function (e, n, v) { 
     console.log('reached'); 
    }); 

На моем взгляде:

<input type="text" ng-model="testObject.name"/> 

Текстовое поле привязано к собственности названия TestObject и когда контроллер загружаются код переходит в функцию $ часов ,

Теперь, если я редактирую значение текстового поля, функция $ watch никогда не запускается. Почему это ?

Я также попытался установить третий аргумент $ watch в true, без эффектов.

+0

РЕКОМЕНДУЕМОГО '$ объем .testObject.name' находится в кавычках внутри функции '$ watch'? – tymeJV

+0

Возможно, это поможет устранить некоторую путаницу. Http://docs.angularjs.org/api/ng.$rootScope.Scope#$watch –

ответ

4

Удалить масштаб с ваших часов. Это следует читать:

$scope.$watch('testObject.name', function(e,n,v){ 
    console.log("reached"); 
}); 
+0

ОК, это работает, спасибо. Но я не понимаю, почему он работал при инициализации контроллера, а не после ... не имеет смысла для меня. – Sam

1

Используйте это:

$scope.$watch('testObject.name', function(e,n,v){ 
    console.log("reached"); 
}); 

Вы можете также добавить другой наблюдатель, как это:

$scope.$watch('testObject.attr1 + testObject.attr2', function(e,n,v){ 
    console.log("reached"); 
}); 

или:

$scope.$watch('testObject', function(e,n,v){ 
    console.log("reached"); 
}, true); 
Смежные вопросы