gpt4 book ai didi

ember.js - Emberjs 上的 Mixins 和 Services 有什么区别

转载 作者:行者123 更新时间:2023-12-01 16:16:53 25 4
gpt4 key购买 nike

我正在尝试遵循 Ember 的最佳实践及其潜力,我想到了这个问题:Mixin 和 Services 之间有什么区别以及您如何使用它们?

我有一些服务/混合并且工作得很好,但我想确保我做得正确。

最佳答案

混合是指当您希望不同的对象具有相同的行为/数据时。假设您希望多个 Controller 触发相同的操作,但更改一个参数:

// app/mixins/change-name.js
export default Ember.Mixin.create({
actions: {
changeName(item) {
item.set('name', this.get('name'));
}
}
});

// app/controllers/some-controller
import ChangeName from '<app-name>/mixins/change-name';

export default Ember.Controller.extend(ChangeName, {
name: 'Some Controller'
});

请注意, Controller 将具有相同的操作,但它不是共享的,每个 Controller 都有自己的操作。您还可以从对象本身扩展 mixins,因为它们已添加到 _super() 链中。

需要记住的一个问题是,像数组这样的原始引用数据类型仍然是通过引用传递的。因此,如果您有一个带有数组属性的 Mixin,请确保在每次使用 Mixin 时在数组上使用 Ember.compulated 来创建新实例。否则,简单地使用通用的 [] 将导致所有 Mixin 使用指向同一个数组。不同的引用值,都指向同一件事。

服务可以被视为一种可变的共享数据。如果您有一组数据或行为需要从应用程序的不同部分访问,那么它是一个很好的服务候选者。

一个这样的例子就是购物篮。无论您位于应用程序的哪个位置,您都需要引用相同的购物篮才能操作其数据。

关于ember.js - Emberjs 上的 Mixins 和 Services 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35269346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com