2015-05-29 2 views
2

Я пытаюсь понять это поведение: , когда я меняю вход, изменение вида тоже, но когда я нажимаю кнопку, окно предупреждения не меняет значение $ scope.firstName. Спасибо за советы. рассматривает

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.firstName = "John"; 
 
    $scope.lastName = "Doe"; 
 
    var test=$scope.firstName; 
 
    $scope.test=function(){  \t 
 
    \t alert(test);  \t 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
    First Name: <input type="text" ng-model="firstName"><br> 
 
    Last Name: <input type="text" ng-model="lastName"><br> 
 
    Full Name: {{firstName + " " + lastName}} 
 
    <button ng-click="test()">Click</button> 
 
</div>

+0

в тестовая переменная инициализируется при создании контроллера, а не при каждом изменении переменной $ scope.firstName. Вот почему вы каждый раз видите одно и то же значение. Контрольная переменная не использует «привязку данных на два дня» углового – vincent

+0

thnks для вашего ответа –

ответ

3

В настоящее время, когда вы запускаете контроллер, вы делаете 3 вещи:

$scope.firstName = "John"; 
$scope.lastName = "Doe"; 
var test=$scope.firstName; 

Так что ваш вар тест инициализации только тогда, когда вы запускаете контроллер не тогда, когда вы laucnh свою функцию. Ваше funtion, напечатайте только это значение.

Если вы хотите распечатать текущую версию сферы, что вам нужно сделать это:

var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope) { 
    $scope.firstName = "John"; 
    $scope.lastName = "Doe"; 

    $scope.test=function(){  
    alert($scope.firstName);   
    }; 

}); 
+0

thnks для вашего ответа –

+0

Добро пожаловать. –

0

Вашего переменным тест только один раз инициализируется со значениями John Doe. , чтобы убедиться, что ваше предупреждение отображает обновленные значения, вы можете напрямую получить доступ к своим переменным $ scope, как предложено в предыдущем ответе, или поместить $watch в область действия. $watch служба фактически наблюдает за изменения в $ объеме затем применяет набор инструкций, например:

$scope.$watch('firstname', function() { 

     test=$scope.firstName; 
    }); 

Каждого ПгвЬЫат изменения времени, функция обновления тестового значения, а затем предупреждение будет отображаться обновленным значение

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