1

なんかこんなの持ってる

<td data-bind="text: email_sended">
  <%= invite.email_send %>
</td>

function AdminInvitesViewModel() {
   var self = this;
   self.email_send = ko.observable();
}

ko.applyBindings(new AdminInvitesViewModel());

コンテナのコンテンツからオブザーバブルを初期化するにはどうすればよいですか?

この場合、メール送信は真/偽の値です。

4

1 に答える 1

4

これが必要な場合は、カスタムバインディングを使用してこれを非常に簡単に行うことができます。

これは、要素のinnerTextを使用して既存のオブザーバブルを設定するか、存在しない場合はオブザーバブルを作成するバインディングです。

ko.bindingHandlers.textWithInit = {
    init: function(element, valueAccessor, allBindingsAccessor, data) {
        var property = valueAccessor(),
            content = element.innerText || element.textContent;

        //create the observable, if it doesn't exist 
        if (!ko.isWriteableObservable(data[property])) {
            data[property] = ko.observable();
        }

        data[property](content);

        ko.applyBindingsToNode(element, { text: data[property] });
    }
};

次のように使用します。

<div data-bind="textWithInit: 'email_sended'"></div>

バインディングはまだ存在していないオブザーバブルをサポートしているため、プロパティ名は引用符で囲まれていることに注意してください

サンプル: http: //jsfiddle.net/rniemeyer/kKBBj/

于 2012-11-14T20:49:47.463 に答える