2016-02-29 4 views
1

Я пытаюсь разработать небольшое приложение.Ошибка при привязке выбранного значения с помощью DevExtreme и KnockOut

Я сделал вид входа, и он работает, я могу связать данные, написанные пользователем. После этого я показываю два окна выбора. Первая привязана к списку (правильно), а вторая должна быть привязана к списку, заполненному после того, как значение выбрано из первого.

Я не могу прочитать значение, выбранное из первого списка.

У меня есть этот HTML:

<div class="dx-fieldset"> 
      <div class="dx-field"> 
       <div class="dx-field-label">Rete</div> 
       <div class="dx-field-value" 
        data-bind="dxLookup: { dataSource: is_retistiSource, value: rete, displayExpr: 'NOME', title: 'Retisti associati', placeholder: 'Selezionare rete', 
              onSelectionChanged:setRete }" /> 
      </div> 

      <div class="dx-field"> 
       <div class="dx-field-label">Impianto</div> 
       <div class="dx-field-value" 
        data-bind="dxLookup: { dataSource: is_impiantiSource, value: impianto, displayExpr: 'NOME', title: 'Impianti associati', placeholder: 'Selezionare impianto' }" /> 
      </div> 
     </div> 

и это JavaScript:

OverviewAPP.afterLogin = function (params) { 
    var isReady = $.Deferred(); 
    var viewModel = { 
     rete: ko.observable(""), 
     impianto: ko.observable(""), 
     is_retistiSource: OverviewAPP.listaReti, 
     is_impiantiSource: OverviewAPP.listaImpianti, 
     setRete: function() { 
      console.log(viewModel.rete); 
      var nRetisti = OverviewAPP.listaRetiImpianti.length; 
      for (i = 0; i < nRetisti; i++) { 
       if (OverviewAPP.listaRetiImpianti[i]["retista"]["NOME"] == this.rete) 
       { 
        OverviewAPP.listaImpianti = listaRetiImpianti[i]["listaImpianti"]; 
        break; 
       } 
      } 
      is_impiantiSource = OverviewAPP.listaImpianti; 
     }, 
     close: function() { 
      OverviewAPP.app.back(); 
     } 
    }; 
    return viewModel; 
}; 

В функции setRete, с линией "console.log (viewModel.rete);" Я вижу это выход:

d(){if(0<arguments.length)return d.Wa(c,arguments[0])&&(d.X(),c=arguments[0],d.W()),this;a.k.Ob(d);return c} 

Почему? Как я могу привязать и прочитать выбранное значение?

UPDATE: Я сделал таким образом, он работает:

setRete: function (e) { 
      OverviewAPP.IDrete = e.value; 
      var nRetisti = OverviewAPP.listaRetiImpianti.length; 
      for (i = 0; i < nRetisti; i++) { 
       if (OverviewAPP.listaRetiImpianti[i]["retista"]["NOME"] == e.value["NOME"]) 
       { 
        OverviewAPP.listaImpianti = OverviewAPP.listaRetiImpianti[i]["listaImpianti"]; 
        break; 
       } 
      } 
      //ko.applyBindings(viewModel); 
     }, 

Но я не знаю, как обновить мой второй список, "is_impiantiSource".

+1

наблюдаемыми являются функции setter/getter. Вероятно, вы хотите 'console.log (viewModel.rete())' –

+0

@RoyJ благодарит за комментарий. Между тем, я сделал это по-другому, и это работает. Можете ли вы прочитать мое обновление? –

ответ

1

Наблюдаемые функции. Вот почему вы получаете функцию в консоли. Вызов функции сплетение, чтобы получить его значение:

viewmodel.rete(); 

Также см тему Knockout: Observables справки, которая описывает это (в разделе «Чтение и запись наблюдаемых»).

Так вы можете получить новое значение. Затем вам необходимо обновить зависимый источник данных поиска. Для этого, сделать is_impiantiSource свойства наблюдаемой массив:

is_impiantiSource: ko.observableArray(OverviewAPP.listaImpianti), 

После этого измените его в setRene как:

viewModel.is_impiantiSource(OverviewAPP.listaImpianti) 

Также см Observable Arrays о том, как работать с массивами в Knockout

+0

спасибо за ответ. Между тем, я сделал это по-другому, и это работает. Можете ли вы прочитать мое обновление? –

+1

Если вы обрабатываете событие onSelectionChanged. У него нет параметра * e.value *: http://js.devexpress.com/Documentation/ApiReference/UI_Widgets/dxLookup/Configuration/?version=15_2#onSelectionChanged –

+1

Возможно, вы обрабатываете событие * onValueChanged * (http : //js.devexpress.com/Documentation/ApiReference/UI_Widgets/dxLookup/Configuration/ версия = 15_2 # onValueChanged)? –

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

  • Нет связанных вопросов^_^