2017-08-02 7 views
-1

私はKnockout.jsに新しく、決して更新されないドロップダウンのコードセクションを見つける。ドロップダウンが更新されないKnockout.JS

<div class="col-sm-12 col-xs-9"> 
    <select class="bs-select" data-width="100px" data-bind="value: measurement"> 
     <option>Gallons</option> 
     <option>Pounds</option> 
     <option>Days</option> 
    </select> 
</div> 

Javascriptを::以下のコードである

var viewModel = function (data) { 
var self = this; 
self.measurement = ko.observable(measurement); 
} 
ko.applyBindings(viewModel) 

私はドロップダウンリストから選択するどのようなオプションは、それはガロンとして表示されます。私が注文を変更してDaysまたはPoundsを最初に置くと、それを変更してもそれは数日またはポンドのままです。 私は何かが欠けているかどうか教えてください。

EDIT 1:オプションリストに値を追加しようとしました。問題を変更しません。

<option value="Pounds">Pounds</option>                    
<option value="Days">Days</option>                    
<option value="Gallons">Gallons</option> 
+1

さて、あなたのすべてのJSが欠落しています。他に何が足りないのかわからない! – Steji

+0

あなたの '

+0

@Steji基本的なドロップダウン機能がJSに必要なのはなぜですか? – Testing123

答えて

1

おそらく、オプションバインディングが必要です。ここ

http://knockoutjs.com/documentation/options-binding.html

フィドルです。

https://jsfiddle.net/0o89pmju/24/

<select class="form-control" data-width="100px" data-bind="value: measurement, options: availablemeasurements"> 
    </select> 

JS

function viewModel() { 
    var self = this; 
    this.measurement= ko.observable(''); 
    this.availablemeasurements=ko.observable(['Pounds', 'Day', 'Gallons']); 
} 

あなたはバインディングと同じようにうまく動作するように表示される値を使用するオプションを使用しない場合。

<select class="form-control" data-width="100px" data-bind="value: measurement"> 
     <option>Pounds</option> 
     <option>Day</option> 
     <option>Gallons</option> 
    </select> 

ここではそのためのフィドルです。ここで

https://jsfiddle.net/0o89pmju/25/

+0

そうだと思っていた。私のアプローチがうまくいく方法はありませんか? – Testing123

+1

これは恐らく最初は恐ろしいかもしれませんが、私はそれはないと約束します:)両方のバインディング、 'value'と' options'を見てみましょう。コードはかなり単純です:https://github.com/knockout/knockout/blob/master /src/binding/defaultBindings/value.jsおよびhttps://github.com/knockout/knockout/blob/master/src/binding/defaultBindings/options.js。そうすれば、単純なバリューバインディングが考慮していないオプションで何が起こっているのかを知ることができます。また、 'selectExtensions'を参照する必要があります:https://github.com/knockout/knockout/blob/4391eb9b9b5d8b5b481d364f54800585215552b6/src/binding/selectExtensions.js – Milimetric

+0

要するに、ドロップダウンの値を設定する必要があります特定の方法で – Milimetric

4

あなたが求めるもののために働いてjsFiddleです:

https://jsfiddle.net/njbLqpmq/

はHTML:

<div class="col-sm-12 col-xs-9"> 
    <select class="bs-select" data-width="100px" data-bind="value: measurement"> 
     <option value="Pounds">Pounds</option> 
     <option value="Days">Days</option> 
     <option value="Gallons">Gallons</option> 
    </select> 
</div> 

JS:

var viewModel = function (data) { 
    var self = this; 
    self.measurement = ko.observable(); 
} 
ko.applyBindings(viewModel) 
+0

フィドルはうまくいくようです。あなたがコードに加えた変更は何ですか?私は同じコードを持っていますが、私のアプリケーションでは動作しません。 – Testing123

+0

私の答えのように測定が観測可能で、htmlバインドされていますか? –

+0

ええ、似ています。最新の編集を確認してください。 – Testing123

関連する問題