ko可变量变量分配给变量js

时间:2017-03-14 10:07:23

标签: jquery html ajax knockout.js

如何将变量ko的值赋给js对象? 姓名,姓氏和国家是可观察的变量

    var ViewModel = function() {
            var self=this;
            self.name=ko.observable();
            self.surname=ko.observable();
            self.counrty=ko.observable();
        };
        ko.applyBindings(vm = new ViewModel()); 
function myFunction(){
                                console.log(self.name);
                                console.log(self.surname);
                                console.log(self.country);
                                 var tipo= {
                                    name: self.nome,
                                    surname: self.surname,
                                    country: self.country,
                                 };

                                 $.ajax({
                                    url : "",
                                    type : "POST",
                                    dataType : 'json',
                                    contentType : "application/json",
                                    data : JSON.stringify(tipo)
                                }).done(function(response) {
                                    alert(response);
                                    reloadKendoGrid($("#grid"));
                                }).error(function(jqXHR, textStatus, error){
                                    alert(error);
                                });
                             }

现在不行! self.name,self.surname和self.country返回'function c()'。

2 个答案:

答案 0 :(得分:1)

将您的方法移到对象中。

JS:

var ViewModel = function() {
    var self=this;

    self.name=ko.observable();
    self.surname=ko.observable();
    self.country=ko.observable();

    self.toJSON = function() { 
         return { name: self.name(), surname: self.surname(), country: self.country() } 
    };

    self.Post = function() {
       $.ajax({
          url : "",
          type : "POST",
          dataType : 'json',
          contentType : "application/json",
          data : self.toJSON(),
       }).done(function(response) {
          alert(response);
          reloadKendoGrid($("#grid"));
       }).error(function(jqXHR, textStatus, error){
          alert(error);
       });
    }
    return self;
}


ko.applyBindings(vm = new ViewModel()); 

HTML:

<a href="#" data-bind="click: Post">

答案 1 :(得分:1)

console.log(self.name());

ko.observable()创建一个函数。您需要将其称为函数以获取值。