0

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

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

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

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

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

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

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

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

4

1 回答 1

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/

于 2014-02-23T18:29:24.830 回答