0

ここにフィドルがあります http://jsfiddle.net/srinivasanvee/yYEwJ/2/

カテゴリ、製品、数量を列として持つリストがあり、ドロップダウン自体から新しいカテゴリを追加するオプションがあり (--新規追加-- オプションを選択)、カテゴリ subscribe メソッドから categoryList observableArray を入力したかった (新しく追加された値は、グリッドのすべての行に適用する必要があります)、それを行う方法がわからない、$root.categoryList.push(name) で試しましたが、うまくいきません

それとも、このシナリオを処理するさらに良い方法がありますか? これについての助けは本当にありがたいです、前もって感謝します。

4

1 に答える 1

1

のような変数$rootはバインディング内でのみ使用できます。

これを機能させる 1 つの方法は、ルート ビュー モデルへの参照を cartLine コンストラクターに渡すことです。

あなたの cartLine は次のようになります。

var cartLine = function(data1, root) {
    this.category = ko.observable(data1.category);
    this.product = ko.observable(data1.product);
    this.quantity = ko.observable(data1.quantity);

    this.category.subscribe(function(newValue) {
        if (newValue == "--Add New--") {
            var name = prompt("Enter Table Name");
            if (name == null) {  
                return false;
            }
            else {
                root.categoryList.push(name);
            }
        }
    });
};

this次に、新しいcartLineを作成するときに、ビューモデルから2番目の引数として渡す必要があります. サンプルはこちら: http://jsfiddle.net/rniemeyer/kzZSH/

それ以外の場合は、元のように cartLine を作成し、新しい行への参照を取得した後に viewModel からサブスクライブすることができます。

于 2012-03-02T01:37:36.123 に答える