Javascript AngularJs不更新模型
我现在正试图用Angular来代替Knockout。 然而,似乎有一些怪癖,我到目前为止根本无法回避 在我的站点的登录功能中,我进行了一个ajax调用,获取了一些用户信息, 然后在控制器中设置此信息 像这样:Javascript AngularJs不更新模型,javascript,angularjs,Javascript,Angularjs,我现在正试图用Angular来代替Knockout。 然而,似乎有一些怪癖,我到目前为止根本无法回避 在我的站点的登录功能中,我进行了一个ajax调用,获取了一些用户信息, 然后在控制器中设置此信息 像这样: $scope.login = function () { var data = { userName: $('#txtLoginName').val(), password: $('#txtLoginPassword
$scope.login = function () {
var data = {
userName: $('#txtLoginName').val(),
password: $('#txtLoginPassword').val(),
};
console.info(data);
postJSON("/StrengthTracker/User/Login", data, function (result) {
if (result.result == "ok") {
$('#loginDialog').modal('hide');
//setting controller variables <------------
$scope.isLoggedIn = true;
$scope.userId = result.userId;
$scope.userName = result.userName;
$scope.publicId = result.publicId;
$scope.gender = result.gender;
$scope.unitName = result.unit;
console.info(result);
notify("Welcome " + $scope.userName);
}
if (result.result == "fail") {
notifyFail("Login failed");
}
});
}
$scope.login=函数(){
风险值数据={
用户名:$('#txtLoginName').val(),
密码:$('#txtLoginPassword').val(),
};
控制台信息(数据);
postJSON(“/strenghtracker/User/Login”),数据,函数(结果){
如果(result.result==“ok”){
$('loginDialog').modal('hide');
//设置控制器变量这与AngularJS没有意识到您的回调函数有关,它不会被跟踪。正如Yoshi已经建议的那样,使用$scope.$apply
修复它,因为这会迫使AngularJS意识到
请注意,AngularJS内置了对使用$http
和$resource
发出AJAX请求的支持(对于REST服务)。使用这些对象的一个优点是,您不必手动使用$apply
,另一个优点是,您的代码通过内置的单元测试支持保持可测试性。使用Awesome,谢谢:)回答一下,我会为您做标记。谢谢,我更改了我自己的“postJSON”函数将我的回调封装在$apply中,因此它现在工作得非常好:-)