观察emberjs模板中json对象的变化

问题描述 投票:0回答:1

如何观察ember模板中json对象的变化,这是我的测试代码,我希望在点击updateJson后显示jsonChange按钮,但没有

测试.hbs

<button {{on "click" this.updateJson}} >updateJson</button>
{{#if this.testJsonChanges}}
<button>jsonChange</button>
{{/if}}

测试.js

export default class TestController extends Controller {
  @tracked testjson = {key1:'value1', key2:'value2'};
  @action updateJson() {
    this.testjson.key1 = 'valuex';
  }
    
  get testJsonChanges() {
    return this.testjson.key1 != 'value1';
  }
}
ember.js
1个回答
0
投票

@tracked
仅适用于引用,就像 const 仅在引用上是常量一样 - 如果您希望跟踪属性的更改,则需要使用
TrackedObject

import { TrackedObject } from 'tracked-built-ins';

export default class TestController extends Controller {
  testjson = new TrackedObject({key1:'value1', key2:'value2'});

  @action updateJson() {
    this.testjson.key1 = 'valuex';
  }
    
  get testJsonChanges() {
    return this.testjson.key1 != 'value1';
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.