值未在浏览器中更新

时间:2017-10-05 17:06:41

标签: angular

我有一名成员:

airline = 'string';

在我的模板中,我有:

<p>{{airline}}</p>

这显然会在浏览器中显示string

我有一个功能:

setValue(selectionChangedEvent) {
  this.airline = selectionChangedEvent.selectionChanges[0].selected[0].properties.airline;
  console.log(this.airline);
}

此函数从以下方式调用:

this._map.on('SelectionChanged', function (selectionChangedEvent) {
  if (selectionChangedEvent.selectionChanges.length > 0) {
    var c = new MapComponent();
    c.setValue(selectionChangedEvent);
  } else {

  }
});

当我运行代码时,我确实在setValue函数中看到this.airline的值,但浏览器中的值仍为string

为什么不在浏览器中更新?

1 个答案:

答案 0 :(得分:1)

问题是您正在使用

创建新组件
var c = new MapComponent();

因此您的原始值永远不会更新。你可能想用

this.setValue(selectionChangedEvent);

相反,但是你也必须通过改变为lambda函数来保存上下文

this._map.on('SelectionChanged', (selectionChangedEvent) => {

否则this.setValue不会存在,因为你处于错误的上下文中。