2014-01-09 4 views
0

Я смотрю на этот основной пример AngularJS:AngularJS Базовая модель Значение Редактирование без контроллера

<!doctype html> 
<html ng-app> 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js"></script> 
    </head> 
    <body> 
    <div> 
     <label>Name:</label> 
     <input type="text" ng-model="yourName" placeholder="Enter a name here"> 
     <hr> 
     <h1>Hello {{yourName}}!</h1> 
    </div> 
    </body> 
</html> 

Это первый пример на веб-сайте и не имеет никакого контроллера или что-нибудь. Текстовое поле прикрепляется к полю модели yourName.

Теперь мне было интересно: поскольку редактирование текста в текстовом поле изменяет значение модели, как я могу изменить значение «yourName» программно? До сих пор я не нашел простого способа сделать это, не добавляя контроллер и еще много чего.

Также, как я могу прикрепить слушателя к этой модели, чтобы ее уведомляли, когда она изменяется?

ответ

1

В этом случае для этого простого примера вам не нужен контроллер. Угловое за кулисами «создает»

$scope.yourName 

С точки зрения его изменения программным путем вы должны использовать контроллер. Что касается наблюдения за изменениями, используйте $scope.$watch

$scope.$watch($scope.yourName, function (newVal, oldVal) { 
    if (newVal !== oldVal) { 
    // logic here 
    } 
}); 
+0

А, ок, спасибо! – arik

+0

Подождите, я попробовал, и он не работает, утверждая, что область не определена? – arik

+1

Посмотрите это видео как введение в контроллеры: https://egghead.io/lessons/angularjs-controllers – victormejia

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