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

2exbekwf  于 2023-11-18  发布在  其他
关注(0)|答案(1)|浏览(197)

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

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

字符串
test.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';
  }
}

sf6xfgos

sf6xfgos1#

@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';
  }
}

字符串

相关问题