現在、Knockout を Angular に置き換えようとしています。ただし、これまでのところ簡単に回避できない癖がいくつかあるようです。
私のサイトのログイン機能では、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 は変数が変更されたことを認識していないようです。
ログイン機能をもう一度押すと、角度が変更に気づき、ユーザーがログインしていることを認識します。
アイデア?