首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ember-Octane:更新时无法在模板中观察到Obj?

Ember-Octane:更新时无法在模板中观察到Obj?
EN

Stack Overflow用户
提问于 2020-12-25 21:56:59
回答 1查看 35关注 0票数 0

你们大多数人都认为这是一个奇怪的问题。我也是。

所以,这是我的控制器文件

代码语言:javascript
复制
application.js

export default class Application extends Controller.extend(someMixin)  {
   @tracked markedValues = {
      item1: {content: "This is item1", count: 1}
      item2: {content: "This is item2", count: 1}
   }

   @action updateCount(itemKey) {
       this.markedValues[itemKey].count = this.markedValues[itemKey].count + 1;
       this.markedValues = {...this.markedValues}
   }
}

application.hbs
  {{#each-in this.markedValues as |key value|}}
        <div {{on "click" (fn this.updateCount key)}}>{{value.content}} and number is {{value.count}}</div>
  {{/each}}

虽然我更新了计数,但它从来没有在模板中反映出来。我在这个地方做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-12-26 04:27:41

问题是内部属性count没有被跟踪。

以下是修复它的一种方法:

代码语言:javascript
复制
import Controller from '@ember/controller';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';

class Item {
  @tracked count;
  constructor(content, count) {
    this.content = content;
    this.count = count;
  }
}

export default class ApplicationController extends Controller {
   @tracked markedValues = {
      item1: new Item("This is item1", 1),
      item2: new Item("This is item2", 1)
   }

   @action updateCount(itemKey) {
       this.markedValues[itemKey].count = this.markedValues[itemKey].count + 1;
       this.markedValues = {...this.markedValues}
   }
}

在这里看到它的工作原理:https://ember-twiddle.com/5e9f814ccf60821b4700b447f1898153?openFiles=controllers.application%5C.js%2C

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65448718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档