0

これは私の質問であり、解決するものが見つかりません。私のGridview用にこのテンプレート(データバインディング用)があるという問題:

<div id="mytemplate" data-win-control="WinJS.Binding.Template">
    <div id="questions" class="tweet">
        <img src="#" style="-ms-grid-row-span: 2; width: 64px; height: 64px; margin-right: 10px;" data-win-bind="src:picture_url">
        <h2 style="width:auto;-ms-grid-column: 2; -ms-grid-column-span: 1; margin-left: 1px; margin-right: 0px; -ms-grid-row-span: 2;" data-win-bind="textContent:type"></h2>   
        <label id="answer" ">Message</label>            
      </div>    
</div>

すべてのアイテムで、ラベルとしてメッセージを持っているので、アイテムをクリックすると、 itemInvokedHandler(eventObject) 関数で、入力テキストを含むフライアウトを表示し、このラベルが入力テキストフィールドから変更されるようにしますそのための解決策は何ですか。ただ、ラベルタグをテンプレートの外に移動することを考えていますが、アイテムごとにラベルが必要なので論理的ではありません。どんな提案や助けも大歓迎です。

4

2 に答える 2

0

最善の選択肢は、MVVM アプローチを使用することだと思います: すべてのアイテムをエンティティにバインドし、このエンティティに Text という名前の監視可能なプロパティを公開させ、Flyout を別の監視可能なプロパティ SelectedItem にバインドします。このプロパティは現在選択されているアイテムで更新され、双方向バインディングを使用します。 Flyout テキスト入力が変更されたときに、選択した項目の Text プロパティを更新します。必要な場合に備えて、ここで双方向バインディングについてブログを書きました: http://codeworks.it/blog/?p=81

于 2013-04-04T04:36:12.717 に答える
0

data-win-bindフライアウト html で属性を使用することをお勧めします。以下のコードは、フライアウトの入力要素に item.title プロパティを表示します。

test.html:
<div class="edit-item" data-win-control="WinJS.UI.Flyout">
        <input type="text" class="item-text" data-win-bind="value: title" />
        <input type="submit" class="submit" />
</div>

test.js: event handler for iteminvoked event for the listview control
_oniteminvoked: function oniteminvoked(event)
{
    var item = this.items.getAt(event.detail.itemIndex); // assuming items is the list binding to the list view
    var editItemFlyoutElement = this.element.querySelector('.edit-item');
    WinJS.Binding.processAll(editItemFlyoutElement, item);
    editItemFlyoutElement.winControl.show(this.element);
}

HTH

于 2013-04-05T08:13:41.067 に答える