2014-02-21 56 views
0

我有一个很难搞清楚如何将数据链接这种情况下,并要求帮助一些时间,但最后我解决了我的问题必须的思想,只有一个小部分我找不到解决方案。JSViews:如何使数据链接辅助函数更新正确

我开始的jsfiddle来测试它: http://jsfiddle.net/ClaudeVernier/U3dZ8/

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

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

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

模板什么显示了完整的列表和编辑模式复选框,而页面的下部从呈现一个数组内的每个项目模板渲染是基于网页的全球模式。

到跨度和下拉菜单的可见性链接到复选框的值,我用了一个帮手,但它不是双向所以复选框不工作。是否辅助函数不能用于数据链接?

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

回答

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计算可观察性)是直接绑定到model.editMode - 如:

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

要做到这一点,你只需要在模型中传递作为帮助对象:

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

这里是一个:http://jsfiddle.net/U3dZ8/6/