2015-09-02 4 views
0
<!DOCTYPE html> 
<html > 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> 
<script> 
var app= angular.module('myApp',[]); 
app.controller('myController',function($scope){ 


    $scope.firstName = 'John'; 
    $scope.lastName = 'Smith'; 
    $scope.fullName = $scope.firstName + ' ' + $scope.lastName; 
}); 
</script> 
<body> 

<div ng-app="myApp" ng-controller="myController"> 



    FirstName <input type="text" ng-model="firstName"> 
    LastName <input type="text" ng-model="lastName"> 
<p>Full name is {{fullName}}</p> 

</div> 

</body> 
</html> 

Результат:Почему ПолноеИмя не изменяется при изменении содержимого текстового поля

Полное имя Джон Смит

Теперь на хромированной браузере, я иду и типа Карла в FirstName текстовое поле, я ожидал результат изменен на

Полное имя Карл Смит.

Однако он не меняется.

Где я ошибаюсь?

+0

Значение '$ scope.fullName' еще«Джон Смит», потому что вы не изменяя его –

+0

$ scope.firstName не меняется Карлу, когда я изменить содержание FirstName Textbox ?? – John

+0

Да 'firstName' изменен, но не' fullName' –

ответ

3

Потому что $scope.fullname оценивается один раз, когда контроллер создан. Вы можете использовать $watch от конкретных переменных или вместо этого использовать функцию, чтобы построить полное имя как

$scope.getFullname = function() { return $scope.firstName + ' ' + $scope.lastName; }; 

И затем вызвать его с <p>Full name is {{ getFullname() }}</p>.

Простейшим способом было бы использование двух переменных непосредственно в шаблоне, например.

<p>Full name is {{ firstName }} {{ lastName }}.</p> 
+0

Почему $ scope.fullname не обновляется автоматически при изменении $ scope.firstName путем изменения содержимого текстового поля FirstName? – John

+0

Поскольку при создании контроллера создается 'fullname' с двумя значениями. Но он оценивается как статическая строка обоих значений. Он не определяет автоматически изменение одной переменной. Это может быть достигнуто с помощью '$ watch' обеих переменных и изменения' fullname', когда один из них изменяется. –