Получение неперехваченной ошибки "no MODIFICATION ALLOWED ERR" для входной привязки
Я начинаю с этого:
<script src="/Scripts/jquery-1.6.2.min.js" ...
<script src="/Scripts/knockout-1.2.1.debug.js" ...
<script src="/Scripts/knockout.mapping-latest.js" ...
<script src="/Scripts/jquery.unobtrusive-knockout.min.js" ...
затем я вытаскиваю плоский объект JSON с сервера и привязываю каждое найденное свойство к соответствующим элементам в DOM:
$.ajax({
url: '/GetRecord',
type: 'POST',
dataType: 'json',
data: JSON.stringify(requestObject),
contentType: 'application/json; charset=utf-8',
success: function (data) {
// Clear the current view model
VM.Items.length = 0;
// only one item coming from server
VM.Items[0] = ko.mapping.fromJS(data.BlankItem);
// for each property found, bind it to the matching DOM element
$.each(VM.Items[0], function (indexInArray, valueOfElement) {
var attrName = indexInArray;
// skip over things not an accessor (get/set property function)
if( typeof valueOfElement == "function")
{
var attrValue = valueOfElement();
// if it's a checkbox, bind the checked attribute
var a = $('input[name="' + attrName + '"][type="checkbox"]');
if (a.length)
a.dataBind({ checked: attrName });
// if it's a radio, bind all the found radio checked attributes
var b = $('input[name^="' + attrName + '"][type="radio"]');
if (b.length)
b.dataBind({ checked: attrName });
// if it's a text, bind the text attribute
var c = $('input[name="' + attrName + '"][type="text"]');
if (c.length)
c.dataBind({ text: attrName }); // <--- Error (use value)
}
});
// Then set knockout loose
ko.applyBindings( VM.Items[0] );
}
});
это приводит к ошибке:
Неперехваченная ошибка: NO_MODIFICATION_ALLOWED_ERR: исключение DOM 7
нокаут.биндингхандлеры.updateknockout-1.2.1.отлаживать.js: 1577
invokeBindingHandlerknockout-1.2.1.отлаживать.js: 1231
нокаут.applyBindingsToNode.нокаут.иждивенец наблюдаем.
disposeWhenNodeIsRemovedknockout-1.2.1.отлаживать.js: 1268
evaluateknockout-1.2.1.отлаживать.js: 927
нокаут.dependentObservableknockout-1.2.1.отлаживать.js: 965
нокаут.applyBindingsToNodeknockout-1.2.1.отлаживать.js: 1252
нокаут.applyBindingsknockout-1.2.1.отлаживать.js: 1284
нокаут.utils.arrayForEachknockout-1.2.1.отлаживать.js: 48
нокаут.applyBindingsknockout-1.2.1.отлаживать.js: 1283
$.Аякс.successPropertyForm: 266
f.расширьте._Отложенный.е.resolveWithjquery-1.6.2.минута.js: 16
wjquery-1.6.2.минута.js: 18
Ф.поддержка.Аякс.Ф.ajaxTransport.отправить.d
Я не вижу привязки любые предметы, которые он не должен. Кроме того, нет никаких декларативной привязки нокаутом в HTML. Что я делаю не так?
3 ответа:
OMG. Ответ состоял в том, чтобы использовать правильный атрибут привязки. Вместо
text
, Это былоvalue
для входа!