简体   繁体   English

从打字稿中的模块注册Knockout.js组件viewmodel

[英]Register Knockout.js component viewmodel from module in typescript

My viewmodel module has several classes, so I want to register a spesific class as component's viewmodel. 我的viewmodel模块有几个类,所以我想注册一个特殊的类作为组件的viewmodel。

And it says: Component 'filter-table': Unknown viewModel value: [object Object] 它说: 组件“ filter-table”:未知viewModel值:[object Object]

This is what I have in my viewmodel module 这就是我的viewmodel模块中的内容

module FilterVM {

export class FilterViewModel {
  //some code
}

class FilterTableViewModel {
} 

class AttributeTableViewModel {
}

class LayerAttributeViewModel {
}

}
export = FilterVM;

And this where I am trying to register 这是我要注册的地方

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' }
    });

What is wrong with that? 怎么了

SOLVED 解决了

The problem was here viewModel: { require: FilterVM.FilterViewModel } 问题出在这里viewModel: { require: FilterVM.FilterViewModel }

Should be viewModel: FilterVM.FilterViewModel 应该是viewModel: FilterVM.FilterViewModel

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

You probably need to change this into a relative path. 您可能需要将其更改为相对路径。 Even though TypeScript finds it at compile time ... the runtime library may not. 即使TypeScript在编译时找到它,运行时库也可能没有。 Use something like require('../AttributeTable/ViewModels/FilterViewModel'); 使用诸如require('../AttributeTable/ViewModels/FilterViewModel'); etc. 等等

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM