2017-04-07 71 views
0

假设有一个枚举和视图模型:如何将视图外部的常量传递给Knockout绑定?

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

var someViewModel = {}; 
ko.applyBindings(someViewModel); 

和视图:

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

我不能找到一种方法来的MyEnum.Val1值传递给具有约束力的,因为长相淘汰赛在视图模型里面。与$root.MyEnum.Val1预先计划不起作用,因为它仍然在视图模型内。

任何想法如何让它工作?

+0

你为什么要这么做?你可以通过在视图模型初始化期间将常量传递给视图模型来完成 – muhihsan

+0

您是否将它视为视图模型的一部分? – dodbrian

+1

'var someViewModel = {MyEnum:MyEnum}''? – user3297291

回答

0

我宁愿首先声明一个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> 
相关问题