我很难弄清楚如何将这个场景链接起来,并考虑了几次求助,但最后我还是解决了我的问题,只有一个小部分我找不到解决方案。
我启动了一个JsFiddle来测试它:http://jsfiddle.net/ClaudeVernier/U3dZ8/
// based on Sample: data-linking to <select>... and much more...
// http://www.jsviews.com/#jsvplaying在这种情况下,我有两个列表,“人员”和“关系”(或这些人与我的关系如何)。
然后,我想要构建一个span和下拉列表数组,其中span显示下拉列表的当前值,并且只显示span或仅显示下拉列表,这取决于用户是否是编辑模式。
显示完整列表和编辑模式复选框的模板基于页面的全局模型,而页面的下半部分则是从为数组中的每个项呈现的模板中呈现的。
要将跨度和下拉列表的可见性链接到复选框的值,我使用了一个助手,但它不是双向的,因此复选框无法工作。是辅助函数不能用于数据链接吗?
感谢您的帮助或建议,如果我的实施是不正确的。向你问好,克劳德
发布于 2014-02-23 18:29:24
您的助手-- ~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]};。
使用带有声明依赖项的editMode()函数(可观察到的JsViews )的另一种替代方法是直接绑定到model.editMode --如下所示:
data-link="visible{:!~model.editMode}"或data-link="visible{:~model.editMode}".
要做到这一点,只需将模型作为助手对象传递:
jsDropDownsTemplate.link("#myDropDowns", model.myRelations, {model: model});
这是一个:http://jsfiddle.net/U3dZ8/6/。
https://stackoverflow.com/questions/21938223
复制相似问题