Я не могу получить привязку к работе над своим приложением KnockoutJS.KnockoutJS не является обязательным
JSFIDDLE ->http://jsfiddle.net/maylortaylor/pfqnkj17/
Вот формат моего JSON (генерируется с использованием <pre data-bind="text: ko.toJSON($root.forms,null,2)"></pre>
)
[
{
"formTitle": "formTitle",
"formDescription": "formDesc",
"fieldTemplates": [
{
"fieldId": "text1",
"title": "title",
"description": "description fieldTemplate",
"isReq": true
},
{
"fieldId": "text2",
"title": "ttitle22",
"description": "description fieldTemplate 2",
"isReq": false
}
]
}
]
А вот как я пытаюсь вызвать его на странице
<div id="MiddleColumn">
<input data-bind="textInput: $root.formTitle" type="text" placeholder="Title" class="span8 hideOffFocus input-full large-type">
<input data-bind="textInput: formDescription" type="text" placeholder="Description" class="hideOffFocus input-full">
</div
ни одна из этих привязок не работает.
Я создаю forms
объект здесь
var FormModel = function (forms) {
var self = this;
self.forms = ko.observableArray(ko.utils.arrayMap(forms, function (form) {
return {
formTitle: form.formTitle, formDescription: form.formDescription,
fieldTemplates: ko.observableArray(form.fieldTemplates) };
}));
};
ko.applyBindings(new FormModel(initialData));
Я не отправил бы это как SO вопрос, потому что ваш собственный код показывает ошибки при запуске отладчика веб-браузера (т.е. Chrome Dev Tools или Firebug), и отладчик должен быть достаточно для устранения проблемы. С другой стороны, кажется, что вы ожидаете, что наблюдаемый массив повернет свойства объекта в наблюдаемые тоже, и это не так, как работает KO! –
@ MatíasFidemraizer на 100% прав. вы можете проверить консоль хром, вы обнаружите неопределенную ошибку. В привязке отсутствует '$ root'. кроме того, используйте 'mapping', чтобы превратить простые массивы в наблюдаемые. tip: если вы меняете в текстовом поле, так как это не наблюдаемое значение, не получите обновление –