Knockout JS mapping плагин путаница - PullRequest
2 голосов
/ 11 января 2012

Я не совсем понимаю, когда и где я должен объявить свою viewModel при использовании подключаемого модуля отображения.

Вот мой файл json:

{
    "members": [
        {
            "memberid": "001",
            "membername": "Jason"
        },
       {
            "memberid": "002",
            "membername": "Bob"
        }
    ]
}

Вот шаблон HTML:

<div data-bind="foreach: members">
<h3 data-bind="text: memberid"></h3>
<p>Name: <span data-bind="text: membername"></span></p>  
</div>

Вот остальные:

var data = $.getJSON("members.json",function(data)  
            {
                var viewModel = ko.mapping.fromJSON(data);
                 ko.applyBindings(viewModel);

            }
        );

ko.mapping.fromJSON(data, viewModel);

Заранее спасибо за вашу помощь!

1 Ответ

6 голосов
/ 11 января 2012

Скорее всего, вы хотите объявить вашу viewModel за пределами замыкания, чтобы она была более доступной. Например:

var viewModel = {};
var data = $.getJSON("members.json",function(data)  
            {
                viewModel.model = ko.mapping.fromJSON(data);
                 ko.applyBindings(viewModel);
            }
        );

Это создаст viewModel, сделает его доступным и предоставит свойство модели (которое будет содержать все сопоставленные данные). Вы можете пропустить свойство модели и просто сделать это на виртуальной машине. Вы даже можете переместить applyBindings за пределы этого, поскольку вы действительно хотите, чтобы он запускался один раз.

...