【问题标题】:How to not repeat explicit settings on Durandal widget bindings如何不在 Durandal 小部件绑定上重复显式设置
【发布时间】:2014-07-01 01:19:06
【问题描述】:

我正在模拟一个使用 Durandal 的网站,以保持我的淘汰赛 js 整洁,但当涉及到 Durandal 时,我承认我是初学者。

我经常需要遍历 viewModel 中的一组项目并绑定小部件,但我发现我必须明确地重复“设置”绑定。

例如:

<section data-bind="foreach: secondaryKpis" class="row">
    <div data-bind="widget: {
        kind: 'kpiSecondary',
        name: $data.name,
        columns: $data.columns,
        delta: $data.delta,
        description: $data.description,
        vsDelta: $data.vsDelta,
        vsDescription: $data.vsDescription
    }">
    </div>
</section>

在 foreach 的上下文中,$data 已经包含我想绑定到自定义小部件 kpiSecondary 的所有属性,并且键入 { someProperty: $data.someProperty, ... } 似乎有点多余。

我知道我可以这样做:

<section data-bind="foreach: secondaryKpis" class="row">
    <div data-bind="widget: {
        kind: 'kpiSecondary',
        data: $data
    }">
    </div>
</section>

但这需要我在自定义小部件中将数据变量解包到 this.settings 中,这是正确的方法还是有一个干净和标准的方法来做到这一点,我只是没有遇到还没有?

【问题讨论】:

    标签: knockout.js durandal


    【解决方案1】:

    为了使您的代码更易于支持,请将getOptionsFor 方法添加到您的视图模型中:

    getOptionsFor: function (item) {
      return {
        name: item.name,
        descr: item.descr
        //etc
      }
    }
    

    在这种情况下,您的 html 将如下所示:

    <div data-bind="foreach: { data: targetArray, as: 'item' }">
      <div data-bind="widget: $parent.getOptionsFor(item)"></div>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-12
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      相关资源
      最近更新 更多