2016-04-12 73 views
1

'a bağlanılamıyor. Bir açılır menüdeki (PrimarySpeciality) diğer açılan (PrimarySubSpeciality) değerin değişmesi gereken değeri temel alarak iki açılırum (PrimarySpeciality, PrimarySubSpeciality) yaşıyorum.Varsayılan değer olarak knockoutJS

Yükte, 'PrimarySubSpecialities' yükünü varsayılan değere istiyorum.

Nasıl yapabilirim?

benim cshtml:

<div class="nmc-righttab" style="width:265px;"> 
    @Html.DropDownListFor(m => m.User.PSpecialty, Model.PSpecialties, new { id = "ddUserDetails", style = "width:245px;height:25px;", data_bind = "event: {change: primaryChanged}" }, Model.IsReadOnly) 
     </div> 
<div style="width:265px;"> 
    @Html.DropDownListFor(m => m.User.PSubSpecialty,Model.PSubspecialties, new { id = "ddUserDetailsPSubSpeciality", style = "width:245px;height:25px;", data_bind = "options: pSubSpecialities,optionsText: 'Name',optionsValue: 'Id',value:PSubspecialty,enable:isPSpecialitySelected" }) 
    </div> 

Benim HB Dosya:

this.PSubspecialty = ko.observable($('#ddUserDetails').val()); 
    this.pSubSpecialities = ko.observableArray([]); 
    this.isPSpecialitySelected = ko.observable(false); 

    this.pSpecilaityChanged = function() { 

     var pSpecialityVal = $("#ddUserDetails").val(); 
     if (pSpecialityVal) { 
      model.isPSpecialitySelected(true); 
      pStartIndex = 0; 
      pSubSpecialityUrl = '/User/GetSpec?pSpeciality=' + pSpecialityVal +'&sSpeciality='; 
      loadPSubSpecilaities(); 
     } 
     else 
     { 
      model.isSelected(false); 
     } 
    }; 

Yük, ben 'pSubSpeciality' 'olarak değerle '<>' gibi metin olabilmesi için başlangıç ​​değerini ayarlamak istediğiniz 0' .

Hatta Model.PSubSpecialties öğesine öğe ekleyebiliyorum, ancak eklenen öğeyi psubspeciality açılır menüsünde görüntüleyemiyorum.

Model değerini, pSubSpecialityDropdown için Model.PSubSpecialities'den nasıl ayarlayabilirsiniz.

cevap

0

Modelinizde daha fazla ve UI'sı daha az çalışın. value -bound değişkeninde değişiklik yapmak için, subscribe, DropDownList öğelerinde changed olayı yapmak yerine. senin PrimarySpecialty DropDown, sizin JS Sonra

data_bind = "value: primarySpecialty" 

yılında:

var self = this;  
this.primarySpecialty = ko.observable(); 
this.isPrimarySpecialtySelected = ko.pureComputed(function() { 
    return !!self.primarySpecialty(); 
}); 
this.primarySubSpeciality = ko.observable(); 
//... 
this.primarySpecialty.subscribe(function (newValue) { 
    if (newValue) { 
     loadPrimarySubSpecialities(); 
     this.primarySubSpeciality('0'); // Set default, by value 
    } 
}); 

PrimarySubSpeciality açılır Id üyesi olan bir seçeneği varsa, '0', madde içinde seçilecektir.