将列表绑定到HTML文本框不会更新视图

时间:2017-05-09 12:33:20

标签: aurelia aurelia-binding

在Aurelia,我有一个这样的文本框:

<input type="text" value.bind="contact.topics|commaList">

其中commaList是值转换器:

export class CommaListValueConverter {
   toView(value) {
     return value.join('|')
   } 

   fromView(value) {
     return value.split('|')
   }
}

有两件事:

  1. 从代码更新列表(contact.topics)不会更改视图中的任何内容。试图强迫two-way。未调用toView()(尝试记录调用)。为了进行比较,在我看来,还有一个常规repeat topic of contact.topics更新正常。

  2. Aurelia通过在我的列表中添加元素contact.topics来修改我的__array_observer__: ModifyArrayObserver列表。所以现在我不得不在保存(或脏检查)之前清理这些不需要的元素列表。

  3. 我以这种方式更新数组:

    this.contact.topics.push('test')
    

    数组的内容在for of循环中正确显示(未显示)。

    要旨

    https://gist.run/?id=dd11c5837b77b29b586d2c4f978a7a48

1 个答案:

答案 0 :(得分:1)

  1. 遗憾的是,Aurelia绑定对Array和Object内部更改没有反应。

  2. 您无法转义aurelia为观察添加的__私有属性,但由于您检查数组是脏的,因此您可以使用arr.slice()

    对其进行干净的克隆