除非刷新,否则看不到模型更改

krugob8w  于 2022-09-28  发布在  其他
关注(0)|答案(1)|浏览(129)

我正在开发一个ember应用程序,我有一个模型挂钩,它从mysql获取数据并显示在模板中。我想问的是,当数据更改时,除非刷新页面,否则看不到它,有没有办法在不刷新页面的情况下显示更改?我使用edge作为我的浏览器rn..,我使用的是最新版本的ember。。

6tqwzwtp

6tqwzwtp1#

Ember通过将属性表示为trackedcomputed,为开发人员提供了一种在模板保持属性动态更新的方法。
当您通过来自模板的某些操作更新属性时,通常需要将属性定义为@tracked,即如果您单击一个按钮,使计数值递增一。
例子:
控制器文件

import Controller from '@ember/controller';
import { tracked } from '@glimmer/tracking';

export default class exampleController extends Controller {
   @tracked count;

   @action
   increment() {
     this.count++;
   }
}

模板文件:

<button type="button" {{on "click" this.increment}}>+1</button>
<p>The count is: {{this.count}}</p>

另一方面,计算属性适用于更高级的情况,其中您可能希望基于两个或更多变量计算值。
示例:(在本示例的上下文中,猫和狗将是Number

import Controller from '@ember/controller';
import { computed } from '@ember/object';

export default class exampleController extends Controller {
  cats = 2;
  dogs = 3;

  @computed('cats', 'dogs')
  get amountOfPets() {
   return this.cats + this.dogs;
  }
}

从模板对猫或狗进行的任何更新也会更新this.amountOfPets在模板上调用时返回的内容。
关于@tracked装饰器的Ember教程:链接。
值得注意的是,如果要将属性传递给Ember组件,它将被自动跟踪,并且不需要使用@tracked装饰器。此外,默认情况下还应跟踪从路线定义的任何模型。

相关问题