0

Knockout で観察できないオブジェクトを持つ要素を再バインドするにはどうすればよいですか? 私が持っているとしましょう

<ul data-bind="attr:{ }, foreach: items"><li><a rel="external" data-bind="attr: { href: full }" ><img data-bind="attr: { src: thumb, alt: caption }" /></a></li></ul>

これを正しくバインドできます。

{
"items":[
                    { "full": "Content\/ImageGallery\/full\/20120502_180612_Josh_Wave_Pint.jpg", "thumb": "content\/imagegallery\/thumb\/20120502_180612_Josh_Wave_Pint.jpg", "caption": "Picture" },
                    {"full":"Content\/ImageGallery\/full\/20130109_173902.jpg","thumb":"content\/imagegallery\/thumb\/20130109_173902.jpg","caption":"Picture"},
                    { "full": "Content\/ImageGallery\/full\/20130107_193641.jpg", "thumb": "content\/imagegallery\/thumb\/20130107_193641.jpg", "caption": "Picture" }
                    ] }

しかし、これを再バインドする方法は?これは機能しません。

ko.applyBindings(updatedJsonObject, $element[0]);
4

1 に答える 1

2

配列をobservableArrayにすることができない場合、主なオプションは、その構造全体を次のようにオブザーバブル内に配置することです。

var myStructure = ko.observable();

//update myStructure with new data
myStructure({[...]});

次に、次のようにバインドします。

<div data-bind="with: myStructure">
    <ul data-bind="attr:{ }, foreach: items"><li><a rel="external" data-bind="attr: { href: full }" ><img data-bind="attr: { src: thumb, alt: caption }" /></a></li></ul>
</div>

これで、配列が監視可能でなくても、(監視可能である) 更新するたびにmyStructure、セクション全体が再レンダリングされます。

于 2013-01-09T14:53:23.037 に答える