Javascript 如何将viewmodel外部的常量传递给敲除绑定?

Javascript 如何将viewmodel外部的常量传递给敲除绑定?,javascript,mvvm,knockout.js,Javascript,Mvvm,Knockout.js,假设存在枚举和视图模型: var MyEnum = { Val1 = 1, Val2 = 2 }; var someViewModel = {}; ko.applyBindings(someViewModel); 还有一个观点: <div data-bind="template: 'my-template', data: MyEnum.Val1"></div> 我找不到将MyEnum.Val1的值传递给绑定的方法,因为Knockout在viewmod

假设存在枚举和视图模型:

var MyEnum = {
   Val1 = 1,
   Val2 = 2
};

var someViewModel = {};
ko.applyBindings(someViewModel);
还有一个观点:

<div data-bind="template: 'my-template', data: MyEnum.Val1"></div>

我找不到将MyEnum.Val1的值传递给绑定的方法,因为Knockout在viewmodel中查找它。使用
$root.MyEnum.Val1作为前缀也不起作用,因为它仍然在viewmodel中显示


有什么办法让它工作吗?

我宁愿先将viewModel声明为函数,而不是直接将其作为对象。通过这样做,如果需要,我们可以在将来重用它,并且在初始化过程中将有一个更整洁的过程将对象传递给该viewModel

以下是一个例子:

function someViewModel(enum) {
  this.myEnum = enum;
};

var MyEnum = {
  Val1: 1,
  Val2: 2
};

ko.applyBindings(new someViewModel(MyEnum));
然后在HTML中,您可以执行以下操作

<div data-bind="template: 'my-template', data: myEnum.Val1"></div>


为什么要这样做?您可以通过在viewmodel初始化期间将常量传递给viewmodel来实现这一点。您的意思是将其作为viewmodel的一部分吗?
var someViewModel={MyEnum:MyEnum}