如何使用打字稿对象呈现局部视图

时间:2019-07-01 04:29:10

标签: javascript typescript knockout.js

到目前为止,我正在使用枚举呈现按钮,然后根据类型使用不同的HTML。就像这样,

export interface control {
  type: controlType;
}

export enum controlType {
  button, 
  switch,
  select
}

然后我可以这样称呼,

<!--- ko: if: $data.type === 0 -->
  PUT CODE HERE
<!-- /ko -->

我正在尝试通过使用对象来帮助优化,然后在另一个文件中呈现代码视图。我无法完全正常工作,我们将不胜感激。到目前为止,我有

export interface control {
  type: {
    button: 'folder/button.html',
    switch: 'folder/switch.html',
    select: 'folder/select.html'
  }
}

然后我以为我可以使用

<!-- ko compose: { view: $data.type } --> <!-- /ko -->

那不起作用,我被卡住了。

1 个答案:

答案 0 :(得分:0)

interface仅用于在构建时检查您的类型。由于您的type对象是在界面中定义的,因此button: 'folder/button.html',和其他对象在运行时都不存在,除非,您为$data.type分配的对象与{ {1}}。

相反,您可以将type定义为字符串controlType

enum

现在,您可以创建export enum controlType { button = 'folder/button.html', switch = 'folder/switch.html', select = 'folder/select.html' } export interface control { type: controlType; } 类型的对象,例如:

control

这会强制const $data: control = { type: controlType.button } 仅具有3个可能的值,并允许您像这样使用它:

$data.type