首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解根模型中可观察到的生活在哪里,在敲除中了解根模型/后代绑定

了解根模型中可观察到的生活在哪里,在敲除中了解根模型/后代绑定
EN

Stack Overflow用户
提问于 2016-03-21 08:28:32
回答 1查看 48关注 0票数 0

这是一个非常适合的场景,理想情况下,我需要能够对属性进行绑定,但能够知道该属性在根视图模型中的位置。

例如,假设我有一个对象:

代码语言:javascript
复制
{
   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") },
   ]
}

现在的问题是,如果我有这样的绑定:

代码语言:javascript
复制
<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

有办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-04 12:22:30

要做到这一点似乎不容易,所以我不得不为某些绑定编写预处理器,以缓存作用域,然后在运行时将其作为新绑定应用(因为预处理器不能访问绑定上下文)。

然后,在实际的绑定中,它们被代理,如果有任何具有现有作用域的父级,则会追加本地属性并缓存其用于绑定上下文中的子查找。

这一做法目前用于:

https://github.com/grofit/treacherous

所以,请随便看看它是如何做到的,如果有更好的解决方案,请告诉我:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36126100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档