2016-07-04 55 views
0

我有多個選項卡(A,B,C)和加載'C'選項卡上,模型屬性應該數據綁定到選項卡'c'。 我正面臨數據綁定的問題。面對淘汰賽的綁定問題

的三個選項卡(A,B,C)是內另一視圖視圖A.

這是我的視圖A

<div id="tabMain" style="width:1230px;height:auto;overflow:auto;"> 
        <ul> 
         <li><a href="#A">A</a></li> 
         <li><a href="#B">B</a></li> 
         <li data-bind="click:loProvision"><a href="#C">C</a> 

Here is my Tab 'c' 



<div id="SubC"> 
<ul> 
     <li><a href="#tabC1">tabc1</a></li> 
</ul> 
     <div id="tabC1" style="overflow:auto;"> 

     <div> 
      @Html.HiddenFor(m => m.UID) 
      <div style="width:500px;height:20px;margin-left:30px"> 
      <div >@Html.NCheckBoxFor(m => m.EnablePD, new { id = "cbPD", style = "vertical-align:middle;", data_bind = "checked:enablePD" }, Model.IsReadOnly)</div> 
      <div > 
       <label for="cbOrgDetailsPD">@Res.OrganizationStrings.Ect</label> 
      </div> 
      </div> 
      <div style="width:100%;margin-top:10px;margin-left:30px"> 
      <div style="width:22%;"> 
       <label for="ddPD">Strings.PlaceUsersInGroup</label> 
      </div> 
      <div style="width:45%">@Html.NDropDownListFor(m => m.PD, Model.groups, new { id = "ddPD", style = "width:270px;height:25px;vertical-align:middle;", , data_bind = "enable: enablePD" 
       }, Model.IsReadOnly)</div> 
      </div> 
      <div style="margin-top:20px;margin-left:30px"> 
      <div >@Html.NCheckBoxFor(m => m.ProType, new { id = "cbType", style = "vertical-align:middle;", data_bind = "checked:enableing" }, Model.IsReadOnly)</div> 
      <div > 
       <label for="cbByType">@Res.Strings.Enableing</label> 
      </div> 
      </div> 
     </div> 
     </div> 

觀,其包含選項卡是具有視圖模型,我想當標籤'c'加載時綁定標籤'c'組件。

這裏是我的Javascript代碼:

function Intialize { 
     var model = new MainviewModel(); 
     ko.applyBindings(model, document.getElementById(orgDetailsTab.getId())); 
    } 

    function MainviewModel() { 
     this.loadvision = function() { 
     if (isvisionsLoaded === false) { 

      var autoUrl = '/Org/OrgView?UID=' + UID + '&isReadOnly=' + isReadOnly; 
      loadvision(); 
     } 
     }; 

    } 
    var CAPDModel; 

    function loadvision() { 
     try { 
     $('#C').empty(); 
     $.ajaxSetup({ 
      cache: false 
     }); 
     $('#C').load(visionUrl, function(responseText, textStatus, XMLHttpRequest) { 

       $("#SubC").tabs().addClass("ui-tabs-vertical ui-helper-clearfix"); 

       isLoaded = true; 

       CModel = new organizationViewModel(); 
       ko.applyBindings(CModel, document.getElementById(tabC1)); 

       function orgViewModel() { 
       this.enablePD = ko.observable($('#cbOrgPD').is(':checked')); 
       this.enableCing = ko.observable($('#cbType').is(':checked')); 
       this.enableLicense = ko.observable($('#cbOrgDetailsLicenses').is(':checked')); 
       this.cansee = ko.observable(false); 
       this.canRemove = ko.observable(false); 
       } 

      } 

我得到異常的

ko.applyBindings(CModel,的document.getElementById(tabC1));

我的要求是在tab'tabC1'的負載上,html屬性應該是數據綁定(禁用和啓用html字段)應該發生。

我在'MainviewModel'中初步放置了與CAPD相關的屬性,但綁定沒有發生。

所以我將C的propeties從'MainviewModel'移動到'tabC1'加載函數,但仍然沒有發生數據綁定。

所以我創建了一個新的viewmodel'tabC1'div加載功能,並試圖在div'tabC1'的加載上應用綁定。

如果方法錯了,還是可以指導一下,或者讓我知道我該如何實現它。

下面是錯誤的詳細信息我面臨的

ko.applyBindings(CModel, document.getElementById(tabC1)); 

Unhandled exception at line 26076, column 17 in eval code 

0x800a139e - JavaScript runtime error: Unable to parse bindings. 

Message: ReferenceError: 'loadvision' is undefined; 

Bindings value: click:loadvision 
+0

你結合'organizationDetailsCAPDViewModel',這(據我所知)不包含名爲'loadAutoProvision'的方法。你的HTML有一個'click:loadAutoProvision',所以它會拋出一個錯誤。你是否想擴展MainViewModel? – user3297291

+0

我的要求是當'C'div被加載在主視圖'A'中時,我想將與CAPD相關的項目綁定到另一個視圖'Tabc'中的'tabc1' –

+0

儘管我不清楚_exactly_你我試着去做,我可以告訴你正以混亂的方式混淆jQuery和淘汰賽......查找淘汰賽的「模板」和「綁定」。它們允許您將HTML注入到數據綁定到子視圖模型的DOM中。 – user3297291

回答

1

我發現了上述問題的解決, 我改了行

ko.applyBindings(CAPDModel, document.getElementById(tabC1)); changed to 

ko.applyBindings(CAPDModel, $("#tabC1")[0]);