【发布时间】:2011-10-20 17:00:32
【问题描述】:
我有一个类似于下面的视图模型,当 onAfterRender 被 Knockout 触发时,视图模型中的函数(也称为 onAfterRender)被执行,但是 this.gridColumns、this.gridOptions 的值是未定义的,无论如何要解决这个问题?我宁愿保留对象函数而不是使用对象字面量。
我这样创建视图模型:
var model = new i2owater.viewmodels.AlarmsForViewModel(somedata);
并调用 ko.applyBindings(model);
这是我的视图模型:
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
};
};
【问题讨论】: