2017-05-01 20 views
0

こんにちは上で観察可能なプロパティを移入次で私を助けてくださいことができます:ノックアウト:ドロップダウン選択

私はモデルを持っている:

「形式」プロパティは、からの眺めに移入され
// Form model 
function Form(form, title, max) { 
    this.Form = ko.observable(form); 
    this.Title = ko.observable(title); 
    this.Max = ko.observable(max); 
} 

この配列:このように

var forms = ['T-01', 'T-02', 'T-03']; 

<select data-bind="options: forms, 
     value: Form, 
     optionsCaption: 'Select...'"> 
</select> 

質問:どのように私は、選択したフォームに基づいて「タイトル」プロパティを移入することができますまた、私はJSONはこのように見ている必要があります私の出力が必要です。私はこのように私のデータを保存しようとするので

"Forms": [ 
    { 
    "Form": "T-01", 
    "Title": "", 
    "MAX": 0 
    } 
    ... 

を:

var forms = [ 
    { name: 'T-01', title: 'Test 1' }, 
    { name: 'T-02', title: 'Test 2' }, 
    { name: 'T-02', title: 'Test 3' } 
] 

そして、私の見解に私はこれをやっている:

<select data-bind="options: forms, 
        optionsText: 'name', 
        value: Form, optionsCaption: 'Select...'"></select> 

私の出力JSONは次のようになります

"Forms": [ 
    { 
    "Form": { 
    "name": "T-01", 
    "title": "Test 1" 
    }, 
    "Title": "", 
    "MAX": 0 
    } 

長い説明に申し訳ありませんが、私は本当にこれをどのように記述していません。ありがとう...

答えて

0

計算されたobservable on titleプロパティを使用できます。

function Form(form, title, max) { 
    var self = this; 
    self.Form = ko.observable(form); 
    self.Max = ko.observable(max); 
    self.forms = ['T-01', 'T-02', 'T-03']; 
    self.Title = ko.computed(function() { 
     if(self.Form() === "T-01") 
     { 
     return 'Test-1' 
     } 
     else if(self.Form() === "T-02") 
     { 
     return 'Test-2' 
     } 
     else { 
     return 'Test-3' 
     } 
    });  
} 

ここでは例としてjsfiddleです。

関連する問題