javascript - Aurelia,如何进行可选绑定(bind)

标签 javascript aurelia

Aurelia 支持可选绑定(bind)吗?我在任何地方都找不到这个信息。我遇到的问题是我有一个 title 属性,该属性可能会也可能不会填充在对象数组中。我使用 repeat.fortitle.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-subtexttitle 作为可选属性。这可行吗?

由于这是一个自定义元素,我尝试删除对象的 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/

相关文章:

javascript - 如何在 JavaScript 中使用 toLocaleString() 和 tofixed(2)

javascript - 将 Exel 响应从 JAX-RS 发送到 AngularJS

Aurelia js 为 popover 主体提供动态内容

typescript - Aurelia Typescript http-fetch-client异步捕获不起作用

javascript - jQuery:在 JSON 中混合字符串和 Javascript 对象列表

javascript - 通过正则表达式获取正确的字符串

javascript - 如何映射和减少 Firebase List Observable 的子值

javascript - Aurelia 对话框和 Typescript 异步等待 - 找不到名称 'await'

javascript - Aurelia 的 Jspm SFX bundle

aurelia - 检测 router.isNavigating 的变化