我现在正在尝试用 Angular 替换 Knockout。但是,到目前为止,似乎有些怪癖我根本无法解决。
在我网站的登录功能中,我进行了 ajax 调用并获取了一些用户信息,然后在控制器中设置了这些信息。
像这样:
$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");
}
});
}
我可以看到返回了正确的数据,例如 notify(..) 调用确实说“Welcome Roger”。到目前为止,一切都很好。但似乎 Angular 没有看到变量发生了变化。
如果我再次点击登录功能,那么角度会注意到更改并了解用户已登录。
想法?