【问题标题】:How to pass a constant outside of a viewmodel to a Knockout binding?如何将视图模型外部的常量传递给 Knockout 绑定?
【发布时间】:2017-09-02 18:25:15
【问题描述】:

假设有一个枚举和一个视图模型:

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

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

还有一个观点:

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

我找不到将MyEnum.Val1 的值传递给绑定的方法,因为 Knockout 在视图模型中查找它。在前面加上$root.MyEnum.Val1 也不起作用,因为它仍然会在视图模型中显示。

任何想法如何让它工作?

【问题讨论】:

  • 您为什么要这样做?您可以通过在视图模型的初始化期间将常量传递给视图模型来做到这一点
  • 你的意思是让它成为视图模型的一部分吗?
  • var someViewModel = { MyEnum: MyEnum } 怎么样?

标签: javascript mvvm knockout.js


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-09-14
    • 1970-01-01
    • 2013-01-03
    • 2014-02-05
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    相关资源
    最近更新 更多