2014-01-15 4 views
2

с помощью Дюрандаль/требует/Breeze/KNOCKOUTветров не обнаруживают изменения

Когда я делаю изменение значения в текстовом поле в таблице. бриз не обнаруживает изменения. manager.hasChanges() всегда возвращает false. Почему ветер не находит эти изменения?

Контроллер

[HttpGet] 
    public object Lookups() 
    { 
     var categories = _contextProvider.Context.KMS_Categories; 
     var tags = _contextProvider.Context.KMS_Tag; 
     return new { categories, tags }; 
    } 

получение данных

var manager = configureBreezeManager(), 
    EntityQuery = breeze.EntityQuery; 

    return EntityQuery.from('Lookups') 
    .using(manager).execute() 
    .fail(queryFailed); 

сохранить изменения функционируют

var saveChanges = function() { 
    return manager.saveChanges() 
    .then(saveSucceded) 
    .fail(saveFailed) 

    function saveSucceded(saveResult) { 
     log('Saved data successfully', saveResult, true); 
    } 

    function saveFailed(error) { 
     var msg = 'Save failed: ' + error.message; 
     logError(msg, error); 
     error.message = msg; 
     throw error; 
    } 
} 

Таблица отображения данных и где изменяется

<table class="table table-bordered table-hover table-striped table-condensed"> 
      <thead> 
       <tr> 
        <th>Tags</th> 
       </tr> 
      </thead> 
      <tbody data-bind="foreach: adminTags"> 
       <tr> 
       <td ><input class="form-control" data-bind="value: $data.Tag()" /></td> 
       </tr> 
      </tbody> 
     </table> 

ответ

3

Вашего связывания incorect, вам нужно написать $data.Tag

<input class="form-control" data-bind="value: $data.Tag" /> 

с написанием $data.Tag() вы не являетесь обязательными для самой вашей наблюдаемой собственности, но вы привязка непосредственно к его основной стоимости, которая делает ваше связывание эффективны односторонний только.

Демо-версия JSFiddle.

+0

+1 для деталей и скрипки! – GETah

+0

Спасибо, что сработал. Любая идея, почему он не будет записывать дополнение к ko.observablearray? var t = {TagID: adminTags(). Length + 1, тег: newTag()}; adminTags.push (t); – user1813251

+0

Если ваш 'adminTags' является наблюдаемым массивом, тогда' adminTags.push (t); 'должен работать нормально ... поэтому ваша проблема находится где-то в другом месте – nemesv

Смежные вопросы