0

ノックアウトの構文を理解しようとしていて、問題が発生しています。

私のkoビューモデルの例

var Market = function (e) {
    var self = this;
    self.MarketId = ko.observable(e ? e.MarketId : '');
    self.Description = ko.observable(e ? e.Description : '');
};

var MarketAddViewModel = function () {
    var self = this;
    var url = "/api/market";

    self.newMarket = ko.observable(new Market());

    // Save market
    saveMarket = function (item) {
        $.ajax({
            type: 'POST',
            url: url,
            data: ko.toJS(item),
            success: function (data) {
                // SUCCESS
            },
            error: function (err) {
                var err = JSON.parse(err.responseText);
                var errors = "";
                for (var key in err) {
                    if (err.hasOwnProperty(key)) {
                        errors += key.replace("employee.", "") + " : " + err[key];
                    }
                }

                alert('error');
                //$("<div></div>").html(errors).dialog({ modal: true, title: JSON.parse(err.responseText).Message, buttons: { "Ok": function () { $(this).dialog("close"); } } }).show();
            },
            complete: function () {
                // complete
            }
        });
    };
};

それをバインドするには、このコードを使用します

 $(document).ready(function () {
            ko.applyBindings(new MarketAddViewModel());
        });

次に、HTML 要素

<input data-bind="value: Description" type="text" class="required input-xxlarge" name="description" id="description" />

しかし、このページをロードすると、「説明が定義されていません」というメッセージが表示されます

どんな手掛かり?

4

2 に答える 2

1

子要素のコンテキストを newMarket コンテキストに変更する with バインディングを使用できます。

<div data-bind="with: newMarket">
    <input data-bind="value: Description" type="text" class="required input-xxlarge" name="description" id="description" />
</div>

編集: また、構成 lib よりも私の規則について PR を行う機会を利用することもできます。上記の構文は次のようになります

<div data-name="newMarket">
    <input data-name="Description" type="text" class="required input-xxlarge" name="description" id="description" />
</div>

https://github.com/AndersMalmgren/Knockout.BindingConventions

于 2013-02-07T12:55:43.697 に答える
1

である必要があると思います

<input data-bind="value: newMarket().Description" type="text" class="required input-xxlarge" name="description" id="description" />

( に注意してください) これはインスタンスnewMarket().のプロパティです。MarketAddViewModel括弧は観察可能な値を抽出し、その「説明」属性を抽出できるようにします。

于 2013-02-07T10:53:38.903 に答える