1

私はこのView-Model構造を持っています:

function PluginViewModel(name, code) {
  var self = this;

  self.name = ko.observable(name);
  self.code = ko.observable(code);
}

function item() {
 var self = this;

 self.id = ko.observable();
 self.listIndex = ko.observable();
 self.value = ko.observable();
 self.label = ko.observable();
 self.tabPos = ko.observable();
 self.plugins = ko.observableArray();
};

function TableViewModel() {
var self = this;

self.columns = ko.observableArray();
self.filteredColumns = ko.observableArray();

// To bind View Fields List
self.selectedColumn = ko.observable();
self.selectColumn = function (p) {
    self.selectedColumn(p);
}

// To bind Table Columns List
self.tmpColSelected = ko.observable();
self.tmpColSelect = function (p) {
    self.tmpColSelected(p);
}

// Plugin selected
self.selectedPlugin = ko.observable();
self.selectPlugin = function (p) {
    self.selectedPlugin(p);
}

// New Plugin
self.newPlugin = ko.observable();
self.addPlugin = function () {
    self.selectedColumn().plugins.push(self.newPlugin());

    $('#dialogAddPlugin').wijdialog('close');
}
}

function SchemaViewModel() {
var self = this;

self.name = ko.observable();
self.tables = ko.observableArray();

self.selectedTable = ko.observable();
self.selectTable = function (p) {
    self.selectedTable(p);
}
}

次に、これはバインディング コードです。

schema = new SchemaViewModel();
ko.applyBindings(schema);

順序付けられていない html リストが tableViewModel の selectedColumn フィールドにバインドされるマスター/ディテール シナリオがあります。

リスト項目が選択されている場合、詳細ビューで Wijmo ダイアログを表示する [追加] ボタンを使用してプラグインを追加できます。これはダイアログのコードです:

<div id="dialogAddPlugin" title="Plugin editor" data-bind="with: newPlugin">
    <textarea data-bind="value: code, valueUpdate: 'input'"></textarea>
    <div>
        Name: <input data-bind="value: name, valueUpdate: 'input'" />
        <button id="btnSaveNewPlugin" data-bind="click: $parent.addPlugin">Save</button>
    </div>
</div>

問題は、ビュー モデルが正しく設定されているように見えても、addPlugin メソッドが呼び出されないことです。

どうしたの?

ありがとうございました

4

0 に答える 0