2013-06-04 124 views
0

所以我必須與Web API後端單頁的應用程序,所以我從多個端點檢索數據併爲此有多個嵌套的ViewModels。 應用程序有一個非常模塊化設計,所以這是一個有點難以得到的代碼在這裏,但我會盡我所能。淘汰賽結合嵌套的ViewModels

我試圖做的是使用數據綁定if語句來包含HTML段,只有當Condition1或Condition2爲true時,Im有問題的部分是Condition1和Condition2在一般viewmodel中,而值我想要綁定在交易視圖模型中,如「with:deal」語句所示。 任何人有任何想法,我怎麼能實現這一點?

視圖模型

 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)...