Ember controller之间通信
使用Ember做项目有一段时间了,查看项目之前的代码,当一个controller用到另一个controller的数据时,总是使用将变量存到localStorage中的方法,虽然这种方式是可以实现功能的,但是有很多局限性:
1、无法直接监听localstorage的变化
2、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,导致页面变卡
3、在浏览器隐私模式下,不能读取localStorage
4、localStorage不能被爬虫抓取到
所以我认为还是使用,Ember自身的通信机制比较好。
使用Ember.inject方法引入controller,就可以在当前界面使用引入的controller了
// 引入controller
headerController: Ember.inject.controller('header');
getData(){
// 使用get方法获取到headerController
let headerController = this.get('headerController');
// 获取headerController中的数据
let value = headerContrller.get('value');
// 调用headerController中的方法
headerController.send('func');
}