知道可观察的在根模型中的位置,在 foreach/后代绑定中被淘汰
Knowing where observable lives in root model in foreach/descendant bindings in knockout
这是一个
非常小众的场景,理想情况下,我需要能够对属性进行绑定,但能够知道该属性在根视图模型中的位置。
例如,假设我有对象:
{
id: ko.observable(1),
name: ko.observable("some user"),
groups: [
{ id: ko.observable(1), name: ko.observable("some group") },
{ id: ko.observable(2), name: ko.observable("some group") },
]
}
现在这里的问题是,如果我有这样的绑定:
<div>
<!-- ko foreach: groups -->
<input data-bind="value: name, custom-binding: { property: name, other: foo }" />
<!-- /ko -->
</div>
现在我需要能够在这里解决name
,以rootModel.groups[currentIndex].name
反对只是name
.目前我认为没有办法在绑定中知道属性是"name"
的,因为它只看到值,所以我可能需要将其作为字符串传入,或者在绑定查找的对象上具有自定义属性。无论哪种方式,我都需要能够以某种方式获取绑定范围内每个可观察量(与其范围内应用的 rootModel 相关)的属性路径。
我知道这看起来很疯狂,确实如此,但如果可能的话,这仍然是我需要能够做的事情。因此,foreach 只是子绑定范围更改并包装的一种方案,因此对于所有方案,我需要能够为与此自定义绑定一起使用的属性构建property-path
。
那么有没有办法做到这一点呢?
似乎没有简单的方法可以做到这一点,所以我不得不为某些绑定编写预处理器来缓存范围,然后在运行时将其作为新绑定应用(因为预处理器无法访问绑定上下文)。
然后在实际绑定中,它们被代理,如果存在具有现有作用域的任何父项,它们会查找,然后追加并缓存本地属性,以便在绑定上下文上进行子查找。
这用于:
https://github.com/grofit/treacherous
因此,请随时查看它是如何完成的,如果有更好的解决方案,请告诉我:)
相关文章:
- Foreach无法在Typescript中工作
- $rootScope未使用forEach进行更新
- 如何制作简单的php'在Javascript中的foreach等价物
- 用独立变量敲除foreach绑定
- Knockout.JS标签在foreach内部不起作用
- 在foreach中获取ajax结果
- 如何在foreach循环中对每个产品单独应用评级系统
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 错误:Can't在从forEach循环发送标头后设置标头
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- 在foreach中加载所有项后,Knockoutjs组件回调
- Javascript:foreach跳过第一个索引(0)
- 嵌套foreach逐字母读取值,而不是整个单词
- Foreach无法在php和Jquery中工作
- 如何在PHP foreach中使用ajax
- 在输入forEach(javascript)时重置变量
- Foreach循环只返回最后一个值
- ko.com在foreach$data变量上添加了write函数
- 复选框:使用Array.prototype.forEach调用推送选中订单,
- 知道可观察的在根模型中的位置,在 foreach/后代绑定中被淘汰