Свойство не определено

Я пытаюсь понять синтаксис нокаута и бежать к проблемам.

Пример моей модели просмотра 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" />

Но когда o загружает эту страницу, я получаю «Описание не определено»

Любая подсказка?

0
nl ja de

2 ответы

Вы можете использовать привязку со связью, которая изменит контекст для дочерних элементов в контексте newMarket

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

edit: Я также могу воспользоваться возможностью сделать PR для моего соглашения по конфигурации lib Вышеупомянутый синтаксис будет выглядеть так:

<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

1
добавлено

Я думаю, что это должно быть

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

(обратите внимание на newMarket (). ), поскольку это свойство экземпляра MarketAddViewModel . Скобка будет извлекать наблюдаемое значение, чтобы его атрибут «Описание» мог быть извлечен.

1
добавлено
Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda