首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Emberjs上Mixins和Services有什么区别?

Emberjs上Mixins和Services有什么区别?
EN

Stack Overflow用户
提问于 2016-02-08 12:08:56
回答 1查看 6.5K关注 0票数 11

我试图遵循最佳实践Ember和他们的潜力,这个问题出现在我的脑海中,Mixins和Services之间有什么区别,以及您是如何使用它们的?

我有一些服务/混合器,工作相当好,但我想确定我做得对。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 15:10:33

当您希望不同的对象具有相同的行为/数据时,mixin。假设您希望多个控制器触发相同的操作,但是要更改一个参数:

代码语言:javascript
运行
复制
// 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'
});

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

要记住的一点是,像数组这样的原始引用数据类型仍然是通过引用传递的。因此,如果您有一个带有数组属性的Mixin,请确保每次使用Mixin时都在数组上使用Ember.computed创建新实例。否则,仅仅使用一个通用的[]就会导致所有Mixin使用指向同一个数组。不同的引用值,都指向相同的事物。

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

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

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

https://stackoverflow.com/questions/35269346

复制
相关文章

相似问题

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