为什么$ scope不会在警告框中更改? (angularJS)

时间:2015-05-29 13:19:13

标签: angularjs

我试图理解这种行为: 当我更改输入时,视图也会更改,但是当我单击按钮时,警告框不会更改$ 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>

2 个答案:

答案 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更改时,该函数将更新测试值,然后警报将显示更新的值