1
define(['plugins/http', 'durandal/app', 'knockout'], function (http, app, ko) {

    return {
        displayName: 'Flickr',

        Value: ko.observableArray([]),

        js : $.getJSON("http://localhost:XXXXX/api/File/Get", function (result) {

            self = this;
            self.Value = result;
            console.log(JSON.stringify(self.Value));
//[{"ID":1,"Name":"a","Type":"text","Size":123},{"ID":1,"Name":"a","Type":"text","Size":123},{"ID":1,"Name":"a","Type":"text","Size":123}]

        }),

Drundal SPA アプリケーション(flick.js)に上記のコードがあり、(flick.html)には次のコードがあります。

<ul class="thumbnails" data-bind="foreach: Value">
            <li data-bind=" text: Name ">

            </li>
        </ul>

しかし、このコードを実行すると、html ファイルに名前のリストが表示されません

誰が私を助けてくれますか

4

2 に答える 2

2

ここで 2 つの問題があります。最初の -observableArray間違って値を割り当てるobservableArrayのは関数なので、()値を割り当てるために使用する必要があります。2番目は、自分自身の文脈が間違っています。self の初期化をjs関数の先頭に移動します。

define(['plugins/http', 'durandal/app', 'knockout'], function (http, app, ko) {

    return {
        displayName: 'Flickr',

        Value: ko.observableArray([]),

        js : function() {
              var self = this;
              $.getJSON("http://localhost:XXXXX/api/File/Get", function (result) {

                  self.Value(result);
                 console.log(JSON.stringify(self.Value()));
              })
        }}
于 2013-09-17T06:36:27.000 に答える
1

Value observable を再作成するのではなく、設定する必要があります。「自己」参照を保持するオブジェクトを作成することもできます。

define(['plugins/http', 'durandal/app', 'knockout'], function (http, app, ko) {
    var VM = function () {
        self = this;
        self.displayName = 'Flickr';
        self.Value = ko.observableArray([]);
        self.js = $.getJSON("http://localhost:XXXXX/api/File/Get", function (result) {
            self.Value(result);
        });
    };
    return new VM();
}),

お役に立てば幸いです。

于 2013-09-17T06:43:56.447 に答える