Aurelia
支持可选绑定(bind)吗?我在任何地方都找不到这个信息。我遇到的问题是我有一个 title
属性,该属性可能会也可能不会填充在对象数组中。我使用 repeat.for
和 title.bind
但如果此属性不是对象数组的一部分,我根本不希望该属性存在。这在 Aurelia
中可能吗?
当将 Bootstrap-Select
与空 title
一起使用时,会引发错误。让 Aurelia
动态创建属性可以解决我的问题。
到目前为止我的代码看起来像这样
<select class="selectpicker" value.bind="value" options.bind="options" disabled.bind="disabled">
<option repeat.for="option of options" model.bind="option"
data-subtext.bind="option.subtext"
title.bind="option.title">
${option.name}
</option>
在此示例中,我希望将 data-subtext
和 title
作为可选属性。这可行吗?
由于这是一个自定义元素,我尝试删除对象的 title
属性 delete this.element.title
但这似乎不起作用。我也尝试过使用 jquery,但还是没有成功。
最佳答案
在很多情况下我没有对此进行测试,但我认为您也可以创建自定义绑定(bind)行为,如下所示:
export class OptionalBindingBehavior {
bind(binding, scope, interceptor) {
binding.originalupdateTarget = binding.updateTarget;
binding.originalTargetProperty = binding.targetProperty;
binding.updateTarget = val => {
if (val === undefined || val === null || val === '') {
binding.targetProperty = null;
} else {
binding.targetProperty = binding.originalTargetProperty;
}
binding.originalupdateTarget(val);
}
}
unbind(binding, scope) {
binding.updateTarget = binding.originalupdateTarget;
binding.originalupdateTarget = null;
binding.targetProperty = binding.originalTargetProperty;
binding.originalTargetProperty = null;
}
}
然后像这样使用它:
<a href.bind="message & optional">${message}</a>
关于javascript - Aurelia,如何进行可选绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42663873/