解决nockout.js Ajax请求返回的结果,Model不能更新

由于Ajax返回之后需要重新问nockout相关属性赋值,首先属性应该被定义为observable属性,在Ajax返回值之后需要重新bind,代码如下:

    <script type="text/javascript">
        function ViewModel() {
            var self = this;
            self.email = ko.observable();
            self.password = ko.observable();
            self.username = ko.observable();

            self.Login = function () {
                $.ajax({
                    type: "post",
                    dataType: "json",
                    url: "/Home/Login/",
                    data: {
                        email: self.email(),
                        password: self.password()
                    },
                    success: function (json) {
                        if (json.Result) {
                            self.username = json.user.username;
                            ko.applyBindings(self);
                            $(‘.form-login‘).css(‘display‘, ‘none‘);
                            $(‘.login-info‘).css(‘display‘,‘block‘);
                            return false;
                        }
                        if (!json.Result) {
                            alert(‘login error‘); return false;
                        }
                    }
                });
            }
        }

        $(function () {
            var vm = new ViewModel();
            ko.applyBindings(vm);
        })
    </script>

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。