1

私はKnockoutjsを初めて使用します

以下のように viewModel を定義しています。

// this is a subclass
var Order = {
        selfdata: {
            id : ko.observable(),
            goodsName : ko.observable(''),
            color : ko.observable(''),
            size : ko.observable(''),
            count: ko.observable(''),
            orderDate: ko.observable(''),
            remarks: ko.observable('')
        },
    }
   // this is a viewModel
   function ShoppingCar() {
        var self = this;
        self.orders = ko.observableArray([]);
        self.show = function (msg) {
            return msg.id;
        }

        //init
        $.get('/Shopping/GetOrders', null, function (data) {
            var items = $.map(data, function (item) { return Order.init(item) });// I write a init function to init order
            self.orders(items);
        });
    }
//then I use Knockoutjs foreach binding as below:
<ul data-role="listview" data-theme="e" data-divider-theme="d">
 <!-- ko foreach: orders -->
     <li data-role="list-divider" data-bind="text: $data.selfdata.id">//!I get null value here</li>

     <li><a href="#">
        <h3 data-bind="text: $data.isValid"></h3>
        <p><strong data-bind="text: $data.selfdata.color">//! here has null value too!</strong></p>
        <p class="ui-li-aside"><strong>12:14</strong>PM</p>
        </a></li>
 <!-- /ko --> 

order.selfdataそれで、私の質問は、 ko の foreach にどのように表示できますか?

4

2 に答える 2

0

強力なタグを閉じる必要があります。コメントによって一掃されています

<p><strong data-bind="text: $data.selfdata.color">//! here has null value too!</strong></p>

する必要があります

<p><strong data-bind="text: $data.selfdata.color"></strong></p>

$data も必要ありません。データが実際にオブザーバブルに正しく渡されていると仮定すると、selfdata.color は正常に動作するはずです。

コメントを修正して $data を削除してもうまくいかない場合は、ブラウザー デバッガーを使用して、監視可能なオブジェクトに実際に含まれているデータを確認します。

于 2013-01-21T16:48:49.967 に答える
0

入れてみましたか:

selfdata.id

また、実際に Orders オブジェクトを正しく設定していることをデバッグして確認しましたか?

于 2013-01-21T16:39:01.327 に答える