0

我正在与 Knockout JS 作斗争。在我的网页中,页面加载后事件 ul 成功显示了数据库中的一些值列表。下面是代码

         <ul data-role="listview" data-divider-theme="b" data-inset="true" data-bind="foreach: Cs">

       <li data-theme="c">
              <a href="#page1" data-transition="slide" data-bind="attr: { title: CID }">
                  <span data-bind="text: FName + ' ' + LName +')'"></span>
              </a>
          </li>

      </ul>

function SSSmodel() {
    var self = this;
   self.Cs = $.parseJSON(localStorage["CsTab"]);       
};

下拉绑定新列表到该 ul 的 Onchange 事件。但它不具有约束力的新值。Ul 显示旧值。下面是下拉的onchage功能。

      function onchange()
        {
      //b contain array of elements
       localStorage["aa"] = b;//i checked b.it contains array of values
      ko.applyBindings(new SSSmodel());  
       }
       function SSSmodel() {
    var self = this;

    self.Contacts = $.parseJSON(localStorage["aa"]);
};
 }

它没有显示任何错误,也没有将新值绑定到 ul。为什么?请告诉我我在哪里犯了错误并提供解决此问题的提示。

4

3 回答 3

0

更新: 您似乎onchange为函数名称使用了保留关键字。用任何其他名称更改它,onValueChange它会起作用。

从代码中的某处调用该函数。这是工作样本

 onchange1();
    function onchange1() {
        //b contain array of elements
        //    localStorage["aa"] = b; //i checked b.it contains array of values
        ko.applyBindings(new StrikeAppSearchViewModel());
    }
    function StrikeAppSearchViewModel() {
        var self = this;

        self.Contacts = [
        { ContactID: "MyId1", FirstName: "Jhon", LastName: "Singh dfhd" },
        { ContactID: "MyId2", FirstName: "Dick", LastName: "YBJ" },
        { ContactID: "MyId3", FirstName: "Harry", LastName: "Pdafhd"}];
    };
于 2013-08-12T12:36:14.517 回答
0

对于这种情况,您必须进行 Jquery Ajax 调用,然后只有它将检索数据绑定到 UL。

  function StrikeAppViewModel() {
    var self = this;
    self.Contacts = ko.observableArray();
    self.Contacts = ko.observable($.parseJSON(localStorage["ContactsTable"]));

    self.SearchContacts = function () {

        $.ajax({
            url: 'http://localhost:12345/api/Contact',
            type: 'GET',
            dataType: 'jsonp',
            data: { ID: id },
            context: this,
            success: function (result) {
                debugger;
                self.Contacts(result);

            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {

                alert(errorThrown);
            }
        });

    }


};
于 2013-08-13T10:36:14.980 回答
0

像这样尝试:

 self.Contacts = ko.observable($.parseJSON(localStorage["ContactsTable"]));
于 2013-09-06T10:14:46.013 回答