1

私はKnockout JSを初めて使用します。ノックアウト js を使用したマッピングについては、Google からあまり助けが得られませんでした。サーバーからJSONを受信して​​います。JSON をノックアウト js マッピング ライブラリでマッピングします。プロパティに関連付けられたデータ バインドされた DOM は更新されません。私が使用しているスクリプトのフィドルを含めました。Observable にマップされる json オブジェクトに注目してください。読み込みボタンをクリックすると、json がマッピングされ、プロパティ「test」の値がタグに表示されるはずです。タグに表示されない理由はありますか?

JS フィドルに実際の例があります。

http://jsfiddle.net/sLZmQ/

これはマッピングされている JSON です

 var json = {
"id": 9,
"test": "John Doe",
"firstName": "John",
"lastName": "Doe",
"referenceNumber": "BUY-08",
"position": "Buyer",
"type": "Buyer",
"telephone": "028 82 240780",
"email": "m@email.com",
"departmentId": 3,
"departmentName": "DEPT B",
"country": "United Kingdom"
};

私のサンプルスクリプト

var masterModel = function()
{
var self = this;
self.members = ko.observableArray([]);
self.websites = ko.observableArray([]);    
self.seoData = ko.observable();
self.test =  ko.observable();
self.loadWebsite = function(website)
{

var json = {
"id": 9,
"test": "John Doe",
"firstName": "John",
"lastName": "Doe",
"referenceNumber": "BUY-08",
"position": "Buyer",
"type": "Buyer",
"telephone": "028 82 240780",
"email": "m@email.com",
"departmentId": 3,
"departmentName": "DEPT B",
"country": "United Kingdom"
};

              self.test(ko.mapping.fromJS(json))
              console.log(self.test);


}    
}
    var master = new masterModel();

   ko.applyBindings(master);

問題は、loadWebsite をクリックしても $data.test.test が更新されないことです。

4

1 に答える 1

2

更新しましたが、いくつかの小さな変更で動作するようです:

http://jsfiddle.net/bYQu7/

重要な点は、「テスト」オブザーバブルを逆参照したことです。

<h1 data-bind="text: test().test">?</h1>

また、初期値も初期化しました。

self.test = ko.observable({ test: ko.observable('WTF') });
于 2013-04-25T01:32:28.203 に答える