2

ノックアウトjsを使用して、Webサービスにjsonレンダリングをネストされたタグのセットにフィードさせました。(よく働く)。

だから私が今やりたいことは、値を変更するためのポップアップ編集ウィンドウ(KendoUI\jqueryでセットアップ済み)を用意することです。

問題は、私が昼食に出かけているかどうかわからないことです.これは可能です.編集を処理するために、バインドされたオブジェクトを別のものにどのように渡しますか?

4

1 に答える 1

5

私は自分のコードで次のようなことをします:

ビューモデルで、ログイン関数のインスタンスを作成します。

    this.loginDialog = ko.observable(new LoginDialog(this));

これは、次のように定義されています。

function LoginDialog(viewModel) {
    var self = this;
    this.viewModel = viewModel;

    this.userid = ko.observable();
    this.password = ko.observable();
    this.open = ko.observable(false);
    this.message = ko.observable();

    // more here
}

次に、次のバインディングがありdialogます。

ko.bindingHandlers.dialog = {
    init: function(element, valueAccessor, allBindingsAccessor) {
        var options = ko.utils.unwrapObservable(valueAccessor());
        setTimeout(function() { 
            $(element).dialog(options || {});
        }, 0);

        //handle disposal (not strictly necessary in this scenario)
         ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
             $(element).dialog("destroy");
         });   
    },
    update: function(element, valueAccessor, allBindingsAccessor) {
         var shouldBeOpen = ko.utils.unwrapObservable(allBindingsAccessor().openWhen);
         var options = ko.utils.unwrapObservable(valueAccessor());
         var $elem = $(element);
         var dynamicOptions = ko.utils.unwrapObservable(allBindingsAccessor().dynamicOpts) || {};
         $elem
            .dialog(shouldBeOpen ? "open" : "close");
         if (dynamicOptions.title)
             $elem.dialog("option", "title", ko.utils.unwrapObservable(dynamicOptions.title));
    }
};

私はこのように呼んでいます

<!--  ko with: loginDialog -->
<div id='logindlg' class="dialog"
    data-bind="dialog: {autoOpen: false, modal: true, closeOnEscape: false, title: 'Login', height: 300, width: 550, dialogClass: 'no-close', resizable: false}, openWhen: open">

 <!-- more stuff here -->
</div>
<!-- /ko -->
于 2012-05-04T01:15:53.283 に答える