我试图理解这种行为: 当我更改输入时,视图也会更改,但是当我单击按钮时,警告框不会更改$ 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(){
alert(test);
};
});
<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 :(得分:3)
目前,当您启动控制器时,您正在做三件事:
<a href="javascript:window.history.back();">my back button link</a>
因此,只有在启动控制器时才会初始化var测试,而不是在启用函数时。你的功能,只打印这个值。
如果要打印当前版本的示波器,则需要执行以下操作:
$scope.firstName = "John";
$scope.lastName = "Doe";
var test=$scope.firstName;
答案 1 :(得分:0)
您的测试变量仅使用John Doe值初始化一次。
要确保警报显示更新的值,您可以按照上一个答案中的建议直接访问$ scope变量,或者在范围上放置$watch
。
$watch
服务实际上会监视$ scope中的更改,然后应用一组指令,例如:
$scope.$watch('firstname', function() {
test=$scope.firstName;
});
每当firstname更改时,该函数将更新测试值,然后警报将显示更新的值