从typescript模块中注册Knockout.js组件视图模型

Register Knockout.js component viewmodel from module in typescript

本文关键字:js 组件 视图 模型 Knockout 注册 typescript 模块      更新时间:2023-09-26

我的viewmodel模块有几个类,所以我想注册一个特定的类作为组件的viewmodel

上面写着:Component 'filter-table': Unknown viewModel value: [object object]

这是我的viewmodel模块

中的内容
module FilterVM {
export class FilterViewModel {
  //some code
}
class FilterTableViewModel {
} 
class AttributeTableViewModel {
}
class LayerAttributeViewModel {
}
}
export = FilterVM;

这里我要注册

import FilterVM = require('Scripts/App/Components/AttributeTable/ViewModels/FilterViewModel');

ko.components.register('filter-table', {
        viewModel: { require: FilterVM.FilterViewModel },
        template: { require: 'text!Scripts/App/Components/AttributeTable/Views/FilterTableView.html' }
    });

这有什么不对?

SOLVED

问题在这里viewModel: { require: FilterVM.FilterViewModel }

应该是viewModel: FilterVM.FilterViewModel

require('Scripts/App/Components/AttributeTable/ViewModels/FilterViewModel');

您可能需要将其更改为相对路径。即使TypeScript在编译时找到它…运行时库可能不会。使用require('../AttributeTable/ViewModels/FilterViewModel');