如何将视图模型外的常量传递给Knockout绑定?

时间:2017-04-07 11:24:12

标签: 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在viewmodel中查找它。前缀$root.MyEnum.Val1也不起作用,因为它仍然在视图模型中查找。

任何想法如何让它发挥作用?

1 个答案:

答案 0 :(得分:0)

我更喜欢先将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>