0

トップバインディングが機能しない理由はわかりませんが、「with」ステートメントは機能します。

ここで JSFiddle に関する質問を設定しました

Why does this not appear when it is bound to Info.Title?
<div data-bind="text: Info.Title"></div>

<hr/>
But this does when I use the with statement?
<div data-bind="with: Info">
    <div>
         <h1 data-bind="text: Title"></h1>

    </div>
</div>
4

2 に答える 2

1

問題は、バインドが最初に発生したときに Info プロパティが未定義であることです。Info が入力されているかどうかを確認してから Title を返すメソッドを VM に追加するように更新しました。JSFiddleの更新された例を次に示します。更新されたバインディング コードは次のとおりで、VM 関数を呼び出します。

<div data-bind="text: GetTitle()"></div>

更新された VM は次のようになります。最後に関数が追加されていることに注意してください。

function DareDetailViewModel() {
    var self = this;
    self.Info = ko.observable();

    var flickerAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?";
    $.getJSON(flickerAPI, {
        format: "json"
    })
    .done(function (data) 
    {
        self.Info(new MapInfo(data));
        console.log(data);
    });

    self.GetTitle = function() {
        if(self.Info())
            return self.Info().Title();
    };
};

もう 1 つのオプションは、最初の Title を持つオブジェクトで Info プロパティを初期化することです。しかし、それはそれを行うためのより長い方法のように思われるので、私はしませんでした. :)

于 2013-05-11T01:57:57.670 に答える