2016-07-08 11 views
0

私は、ユーザーがリセットボタンをクリックしたときにfalse/trueのドロップダウンリセット(デフォルトではfalseに設定されている配列の最初の項目)の値を取得しようとしました。これらすべてのフォームフィールドをクリアするためにAddボタンを押した後に呼び出される必要があります。船舶以外はすべて清算されています。このノックアウトバウンドセレクトのオプションをリセットできないのはなぜですか?

形式:もちろん

<form data-bind="submit: addItem"> 

       <label>Category</label><br/> 
       <div> 
        <select data-bind="options: categories, optionsText: 'Name', value: newItem.Category"></select> 
       </div><br/> 


       <div class="form-group"> 
        <label>Name</label><br/> 
        <div> 
         <input type="text" class="form-control" id="inputName" data-bind="value: newItem.Name"/> 
        </div> 

        <label>Description</label><br/> 
        <div> 
         <textarea rows="3" class="form-control" id="inputDescription" data-bind="value: newItem.Description"></textarea> 
        </div> 

        <label>Price</label> 
        <div> 
         <input type="number" step="any" class="form-control" id="inputPrice" data-bind="value: newItem.Price"/> 
        </div> 

        <label>Vesselizable?</label> 
        <div> 
         <select data-bind="options: vesselOptions, value: newItem.IsVesselizable"></select> 
        </div> 

       </div> 
       <button type="submit" class="btn btn-default">Add</button> 
       <button data-bind="click: hideAddPanel" class="btn btn-default">Cancel</button> 
       <button data-bind="click: resetAddPanel" class="btn btn-default">Reset</button> 
      </form> 

、vesselOptionsだけである:コードで

self.vesselOptions = ko.observableArray(); 

、この関数の最初の呼び出しが正常に私にIsVesselizableのための私のオプションを取得します。

function getVesselizability() { 
    var data = ['false', 'true']; 
    self.vesselOptions(data); 
} 

しかし、私のリセット機能は、カテゴリドロップダウンのリセット実際にはAPIを呼び出してカテゴリの配列を取得しています。しかし、船舶のドロップダウンを偽ではなく真に変更した場合、デフォルト値のfalseにリセットされず、拘束されていないことが示唆されます。おそらくnewItem.IsVesselizableに含まれる値がまだに設定されているため

self.resetAddPanel = function() { 
    getCategories(); 
    getVesselizability(); 
    self.newItem.Name(''); 
    self.newItem.Description(''); 
    self.newItem.Price(''); 
} 

答えて

1

その。あなたはリセット機能の値をクリアしていません。単純に追加します。もちろん

self.resetAddPanel = function() { 
    /*Same as before*/ 
    self.newItem.IsVesselizable(true); 
} 

をあなたも

self.resetAddPanel = function() { 
    /*Same as before*/ 
    self.newItem.IsVesselizable(''); 
} 

そしてあなたのHTML内と一緒に結合optionsCaptionを使用することができます。

<select data-bind="options: vesselOptions, value: newItem.IsVesselizable, optionsCaption: 'Please Choose...'"> 
</select> 
+0

私はむしろoptionsCaptionを追加するよりも、あなたの最初のオプションを選択しました、1つの注記:実際には、選択肢が適切に機能するには、そのプロパティの値を一重引用符で囲む必要がありました。 (また、私は真実ではない偽を望んだが、それは重要ではない)。したがって: 'self.newItem.IsVesselizable( 'false');' ありがとう! – 333Matt

関連する問題