首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在ember中将属性从一个控制器传递到另一个控制器,而不涉及路由的setupController?

在Ember中,可以通过使用服务(service)来将属性从一个控制器传递到另一个控制器,而不涉及路由的setupController方法。

  1. 首先,在应用程序中创建一个服务(service)。可以使用Ember CLI命令ember generate service <service-name>来生成一个服务文件。
  2. 打开生成的服务文件,并在其中定义需要传递的属性。例如,假设我们要传递一个名为propertyToPass的属性:
代码语言:txt
复制
// app/services/my-service.js

import Service from '@ember/service';

export default Service.extend({
  propertyToPass: null
});
  1. 在发送属性的控制器中,注入刚刚创建的服务,并设置属性的值:
代码语言:txt
复制
// app/controllers/sending-controller.js

import Controller from '@ember/controller';
import { inject as service } from '@ember/service';

export default Controller.extend({
  myService: service(),

  init() {
    this._super(...arguments);
    this.get('myService').set('propertyToPass', 'Hello from sending controller');
  }
});
  1. 在接收属性的控制器中,同样注入服务,并获取属性的值:
代码语言:txt
复制
// app/controllers/receiving-controller.js

import Controller from '@ember/controller';
import { inject as service } from '@ember/service';

export default Controller.extend({
  myService: service(),

  receivedProperty: Ember.computed('myService.propertyToPass', function() {
    return this.get('myService.propertyToPass');
  })
});

在上述代码中,我们使用了一个计算属性(computed property)来监听myService.propertyToPass的变化,并将其值赋给receivedProperty

这样,属性就成功从一个控制器传递到了另一个控制器,而不需要涉及路由的setupController方法。

请注意,这里的示例仅演示了如何在Ember中传递属性,实际应用中可能需要根据具体情况进行适当的修改和调整。

推荐的腾讯云相关产品:腾讯云云服务器(CVM),腾讯云云数据库 MySQL版(CDB),腾讯云对象存储(COS)。

腾讯云产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券