次のようなビューモデルがあります.nockoutによってonAfterRenderが起動され、次にviewModel(onAfterRenderとも呼ばれる)の関数が実行されますが、this.gridColumns、this.gridOptionsこれを修正するにはどうにかしていますか?私は、オブジェクトリテラルを使用するのではなく、オブジェクトの機能を維持することを推奨します。ノックアウトビューモデルのプロパティは、onAfterRender関数で未定義です
私はこのように私のViewModelを作成:
var model = new i2owater.viewmodels.AlarmsForViewModel(somedata);
とko.applyBindings(モデル)を呼び出すと、
これが私の見解モデルです:
viewModel = function (serverData) {
var alarmGrid = {};
function onAfterRender() {
var that = this;
this.alarmGrid = new i2owater.Slickgrid();
// this.gridColumns and this.gridOptions are both undefined
this.alarmGrid.setupGrid("#alarmsGrid", [], this.gridColumns, this.gridOptions);
};
return {
data: data,
tabs: tabs,
selectedPriority: selectedPriority,
company: company,
zone: zone,
rows: rows,
alarmPeriod: alarmPeriod,
//alarmGrid: alarmGrid,
gridColumns: [{ id: "id", name: "ID", field: "id", sortable: true },
{ id: "date", name: "Date", field: "date", sortable: true },
{ id: "description", name: "Description", field: "description"}],
gridOptions: {
editable: true,
enableCellNavigation: true,
asyncEditorLoading: true,
forceFitColumns: false,
topPanelHeight: 25,
rowHeight: 40
}
onAfterRender: onAfterRender
};
};
私が何かを見逃しているかどうかわからない、this.gridColumnsがどのように定義されていないのか? – Dave
ご迷惑をおかけしました。更新しました。 –
例を見て、私は描画ボードに戻って、onAfterRender(renderedNodesArray、bindingContext)を使うことができることを発見しました.BindingContextはgridOptionsやgridColumnsなどにアクセスできます。 – Dave