【问题标题】:JSViews: How to make data-linked helper functions update correctlyJSViews:如何使数据链接的辅助函数正确更新
【发布时间】:2014-02-21 15:19:36
【问题描述】:

我很难弄清楚如何对这种情况进行数据链接,并多次考虑寻求帮助,但最后我解决了我的问题,只有一小部分我没有找到解决方案。

我启动了一个 JsFiddle 来测试它: http://jsfiddle.net/ClaudeVernier/U3dZ8/

// based on Sample: data-linking to <select>... and much more...
// http://www.jsviews.com/#jsvplaying

在这种情况下,我有两个列表,“人”和“关系”(或这些人与我的关系)。

然后,我想构建一个跨度和下拉列表的数组,其中跨度显示下拉列表的当前值并仅显示跨度或仅显示下拉列表,具体取决于用户是否处于编辑模式。

显示完整列表和编辑模式复选框的模板基于页面的全局模型,而页面的下部是从为数组中的每个项目呈现的模板呈现的。

为了将跨度和下拉菜单的可见性链接到复选框的值,我使用了一个助手,但它不是双向的,因此复选框不起作用。是不是辅助函数不能用于数据链接?

如果我的实现不正确,感谢您提供任何帮助或建议。 最好的祝福, 克劳德

【问题讨论】:

    标签: jsfiddle jsviews


    【解决方案1】:

    您的助手 - ~editMode() 不可观察 - JsViews 不知道它依赖于 model.editMode - 因此对 model.editMode 的可观察更改不会触发对 ~editMode() 的绑定更新。

    但是你可以声明一个依赖,然后它就会起作用:

    $.views.helpers.editMode.depends = [model, "editMode"];

    这里是http://jsfiddle.net/U3dZ8/5/

    顺便说一句,这里的语法是,如果您想声明对与当前数据对象不同的对象上的路径的依赖关系,您可以将任何对象传递给depends 数组,然后是一个或多个路径对象作为根:['path.from.currentObject', otherObject, 'path1.from.otherObject', 'path2,from.otherObject' .... ]

    您可以做的另一件事(对于没有预先静态确定对象或路径的情况)是提供一个函数.depends = function() {return [listOfPaths_OrObjectsFollowedByPaths]};

    使用带有声明依赖项(一个 JsViews 计算的 observable)的 editMode() 函数的替代方法(对于您的示例)是直接绑定到 model.editMode - 如下所示:

    data-link="visible{:!~model.editMode}"data-link="visible{:~model.editMode}"

    为此,您只需将模型作为辅助对象传入:

    jsDropDownsTemplate.link("#myDropDowns", model.myRelations, {model: model});

    这是那个:http://jsfiddle.net/U3dZ8/6/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2018-12-13
      • 2022-01-16
      相关资源
      最近更新 更多