2013-06-04 4 views
0

Итак, у меня есть одностраничное приложение с бэкэнд Web API, поэтому я извлекаю данные из нескольких конечных точек и поэтому имею несколько вложенных режимов просмотра. Приложение имеет очень модульный дизайн, поэтому получить код здесь немного сложно, но я сделаю все возможное.Ноутаут привязки вложенных режимов просмотра

То, что я пытаюсь сделать, это использовать оператор привязки данных для включения сегмента HTML только в том случае, если условие Condition1 или Condition2 истинно, то часть Im имеет проблемы с тем, что Condition1 и Condition2 находятся в общей модели просмотра, в то время как значения которые я хочу связать, находятся в режиме просмотра сделки, как видно из инструкции «with: deal». Кто-нибудь знает, как я мог это достичь?

ViewModel

 var self = this; 
    self.deal = ko.observable(); 
    self.general = ko.observable(); 

    calculation.getBasicFactsDeal(calculationId, function (data) { 
     self.deal(mapping.fromJS(data)); 
     var data = self.deal(); 
    }); 

    calculation.getBasicFactsGeneral(calculationId, function (data) { 
     self.general(mapping.fromJS(data)); 
     var data = self.general(); 
    }); 

HTML:

<div class="section" data-bind="with: deal"> 
     <div data-bind="if: $root.general().Condition1 || $root.general().Condition2 > 
      <label >Is this a New Client?</label> 


      <input type="radio" name="RadioGroup" id="Radio1" value="true" data-bind=" checkedRadioToBool: NewClient" /> 
      <label for="radio1">Yes</label> 
      <input type="radio" name="KSTProcurmentRadio" id="Radio2" value="false" data-bind=" checkedRadioToBool: NewClient" /> 
      <label for="radio2">No</label> 
      </div> 
    </div> 

ответ

1

У вас возникли проблемы с размахом. Как насчет:

<div class="section"> 
    <div data-bind="if: $root.general().Condition1 || $root.general().Condition2"> 
     <!-- ko with: deal --> 
      <label>Is this a New Client?</label> 
      <input type=" radio " name="RadioGroup " id="Radio1 " value="true " data-bind="checkedRadioToBool: NewClient" /> 
      <label for="radio1 ">Yes</label> 
      <input type="radio " name="KSTProcurmentRadio " id="Radio2 " value="false " data-bind="checkedRadioToBool: NewClient " /> 
      <label for="radio2 ">No</label> 
     <!-- /ko --> 
    </div> 
</div> 
0

Я не могу увидеть код для «сделки», но если условия «сделки» являются наблюдаемыми, то вы должны изменить data-bind="if: $root.general().Condition1 || $root.general().Condition2" > к data-bind="if: $root.general().Condition1() || $root.general().Condition2()" >.
Я также заметил, что вам не хватает замыкающей блок-цитаты в конце атрибута привязки данных (с IF) ...

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