我试图在控制器的功能中修改$ scope内的变量并且效果有效,但在视图中不适用。
app.controller('LoginCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.test = "test";
$scope.logIn = function() {
// This changes the value to test2, but does not applies it to the view.
$scope.test = "test2";
};
}]);
在login.html中:
DEBUG: {{ test }}
和routeProvider:
$routeProvider
.when('/', {
templateUrl: '/views/login.html',
controller: 'LoginCtrl'
})
我错过了文档吗?
谢谢!
答案 0 :(得分:3)
这是因为angular不知道logIn函数所做的范围更改,我认为在您的情况下是异步调用的。在异步调用logIn()之后,通过
强制更改范围$scope.$apply()
答案 1 :(得分:0)
所以我认为这是一个已知原语的参考或继承问题,请参阅此帖https://github.com/angular/angular.js/wiki/Understanding-Scopes。尝试使用相同的代码,但将 test 放在一个对象中,如下所示:
$scope.viewModel = {};
$scope.viewModel.test = 'Test';
答案 2 :(得分:0)
我发现我把ng-controller =“”放在调用logIn()函数的HTML元素中。
实际上,我调用了两次并导致视图更新失败。