我有一个自定义属性,可以为bindingContext
添加一个属性,以便其他自定义属性/元素可以使用这些数据。
因此,例如属性bind方法可能如下所示:
bind(binding, scope) {
binding.someCustomProperty= this.value; // have tried using scope too
}
现在,包含在此自定义属性范围内的任何内容都可以正常工作,即:
<section my-attribute="something">
<input some-other-attribute="somethingElse">
</section>
因此,假设section属性设置了bindingContext
属性,那么some-other-attribute
将访问bindingContext
上的该属性,它将全部有效。
然而,当我使用重复并且想要在重复绑定中使用some-other-attribute
时,问题出现了,bindingContext
丢失了someCustomProperty
。那么有一个&#34;正确的&#34;添加到绑定上下文并通过重复或其他子绑定持续存在的方法?
答案 0 :(得分:4)
您可能希望将自定义属性更改为以下方式:
bind(bindingContext, overrideContext) {
overrideContext.someProperty = something;
}
我建议你使用overrideContext
,因为它存在的一个主要原因是存储额外的&#34;上下文&#34;可绑定的道具,例如$event
,$first
,$last
,$index
等,而无需向基础视图模型添加道具。
此更改单独无法解决您的问题。发生了什么,重复中的每个项目都有自己的bindingContext / overrideContext。这些是层次结构,因此您可以检测到&#34;重复&#34;通过查找repeat-specific props,例如$first
,$last
,$odd
,$even
:
bind(bindingContext, overrideContext) {
// are we in a repeat?
if ($even in overrideContext) {
overrideContext = overrideContext.parentOverrideContext;
}
overrideContext.someProperty = something;
}