我正在开发一个ember应用程序,我有一个模型挂钩,它从mysql获取数据并显示在模板中。我想问的是,当数据更改时,除非刷新页面,否则看不到它,有没有办法在不刷新页面的情况下显示更改?我使用edge作为我的浏览器rn..,我使用的是最新版本的ember。。
6tqwzwtp1#
Ember通过将属性表示为tracked或computed,为开发人员提供了一种在模板上保持属性动态更新的方法。当您通过来自模板的某些操作更新属性时,通常需要将属性定义为@tracked,即如果您单击一个按钮,使计数值递增一。例子:控制器文件
@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)
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装饰器。此外,默认情况下还应跟踪从路线定义的任何模型。
this.amountOfPets
1条答案
按热度按时间6tqwzwtp1#
Ember通过将属性表示为tracked或computed,为开发人员提供了一种在模板上保持属性动态更新的方法。
当您通过来自模板的某些操作更新属性时,通常需要将属性定义为
@tracked
,即如果您单击一个按钮,使计数值递增一。例子:
控制器文件
模板文件:
另一方面,计算属性适用于更高级的情况,其中您可能希望基于两个或更多变量计算值。
示例:(在本示例的上下文中,猫和狗将是
Number
)从模板对猫或狗进行的任何更新也会更新
this.amountOfPets
在模板上调用时返回的内容。关于
@tracked
装饰器的Ember教程:链接。值得注意的是,如果要将属性传递给Ember组件,它将被自动跟踪,并且不需要使用
@tracked
装饰器。此外,默认情况下还应跟踪从路线定义的任何模型。