2012-10-08 29 views
0

我有一個foreach結合,看起來像:淘汰賽綁定中的foreach結合打破

<ul class="nav nav-tabs" data-bind="template: { name: 'tablsUlTemplate', foreach: Operators }"> 
    <li class="active"><a href="#summary" data-toggle="tab">Summary</a></li> 
    <li><a href="#permitting" data-toggle="tab">Permitting</a></li> 
</ul> 
<script type="text/html" id="tablsUlTemplate"> 
    <li><a data-bind="attr: { href: NameHash }" data-toggle="tab"><span data-bind="text: Name"></span></a></li> 
</script> 

這樣做的原因是有兩個選項卡,將永遠存在,我添加如果已經添加它的其他選項標籤取決於或不。

的問題是不是與以上,但與選項卡的內容,這部分看起來類似於上面僅僅是一個很多,所以決定在展示租賃1層完整的部分。

然後我有(折斷)

<div class="tab-content" data-bind="template: { name: 'tablsContentTemplate', foreach: Operators }" > 
    <div class="tab-pane active" id="summary"> 
    </div> 
    <div class="tab-pane" id="permitting"> 
     <table class="span10"> 
      <thead> 
       <tr> 
        <th></th> 
        <th>Submission 
        </th> 
        <th>Approval 
        </th> 
        <th>Timeline 
        </th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr data-bind="visible: PermittingCAAActive"> 
        <td> 
         <label class="checkbox"> 
          CAA 
         </label> 
        </td> 
        <td> 
         <div class="input-prepend"> 
          <span class="add-on"><i class="icon-th"></i></span> 
          <input id="text12" type="text" readonly="true" class="spandate" runat="server" data-bind="value: PermittingCAASubmission" /> 
         </div> 
        </td> 
        <td> 
         <div class="input-prepend"> 
          <span class="add-on"><i class="icon-th"></i></span> 
          <input id="text13" type="text" readonly="true" class="spandate" runat="server" data-bind="value: PermittingCAAApproval" /> 
         </div> 
        </td> 
        <td> 
         <div class="input-prepend"> 
          <input id="text14" type="text" readonly="true" class="spandate" runat="server" data-bind="value: PermittingCAATimeline" /> 
         </div> 
        </td> 
       </tr> 
      </tbody> 
     </table> 
    </div> 

我的問題是,在foreach的綁定中的綁定不工作。

請注意VM:

viewModel = { 
    Operators: ko.observableArray(), 
    PermittingCAAActive : ko.observable(), 
    PermittingCAAApproval : ko.observable(), 
    PermittingCAASubmission: ko.observable(), 
    PermittingCAATimeline: ko.observable(), 
} 

請注意我忽略的東西,是不相關的問題。

+0

它是什麼「不工作?」究竟發生了什麼?你期望發生什麼?你有沒有設置'運營商'? –

回答

1

我會建議不要混用具有模板化內容固定內容,可能使用虛擬元素,如這裏如下圖所示:

<ul> 
    <li data-bind="text: PermittingCAAActive"></li> 
    <!-- ko template: {name: 'tablsUlTemplate', foreach: Operators} --> 
    <!-- /ko --> 
</ul> 

<script type="text/html" id="tablsUlTemplate"> 
    <li><a data-bind="attr: { href: NameHash }" data-toggle="tab"><span data-bind="text: Name"></span></a></li> 
</script> 

這將使綁定更易於管理。

+0

謝謝你正是我所需要的,不知道有關虛擬綁定 – Armand

1
// data-bind="template: { name: 'tablsContentTemplate', foreach: Operators }" 

<td> 
    <div class="input-prepend"> 
     <span class="add-on"><i class="icon-th"></i></span> 
     <input id="text12" type="text" readonly="true" class="spandate" runat="server" data-bind="value: PermittingCAASubmission" /> 
    </div> 
</td> 

讓我們審視上述結合,使用的foreach後您的值綁定期望找到PermittingCAASubmission內的運營商之一。但是它裏面沒有允許CAASubmission,因此添加$ parent或$ root可以解決您的問題。

data-bind="value: $parent.PermittingCAASubmission" 

請包括您的錯誤信息到您的問題,我們可以在那之後多說一些。