Ember.js的组件如何使用sendAction与控制器、路由通信
2016-01-26 00:00
716 查看
摘要: 很多开发者对于sendAction方法的使用理解不清晰,本文结合示例为读者介绍怎么使用sendAction方法在组件component与控制器controller、路由route之间通信,以及可能出现的陷阱。 更多有关Ember.js陷阱的介绍请联系 Emberfest 2014 Presentation。
原文地址:http://120.24.90.140:2368/communicating-with-ember-js-components-using-sendaction/
更多有关Ember.js陷阱的介绍请联系 Emberfest 2014 Presentation。
下面列出在组件
在组件
在组件
组件中调用
如何才能把用户选择的日期输入发送到控制器中呢?你可以参考下面的代码实现:
当用户选择日期,首先会触发组件类里的定义的
如上代码调用之后,用户选择日期这个行为会发送到控制器执行,可以在控制器中获取用户选择的日期数据。
上述三个文件的调用可以用下图来表示更加准确:
这种情况经常会在设置某个状态的时候用到,比如需要根据某个标记显示、隐藏div获取是设置选中状态。
下面三个文件是一个完整项目中使用上述特性的示例:
调用组件的模板
组件类
控制器
关于这个特性更多介绍请看官方文档介绍。
原文地址:http://120.24.90.140:2368/communicating-with-ember-js-components-using-sendaction/
组件和sendAction方法
很多开发者对于sendAction方法的使用理解不清晰,本文结合示例为读者介绍怎么使用
sendAction方法在组件
component与控制器
controller、路由
route之间通信,以及可能出现的陷阱。
更多有关Ember.js陷阱的介绍请联系 Emberfest 2014 Presentation。
下面列出在组件
component中使用
action与在控制器
controller、路由
route中使用action的不同点:
在组件
component中使用
sendAction方法在控制器
controller、路由
route中使用
send方法。
在组件
component中调用未定义的
action行为不会报错,但是在控制器、路由中调用未定义的
action方法会出现异常错误。
组件中调用
sendAction的作用是把行为通过调用的模板发送到控制器、路由中处理,而不是直接在组件类中处理(下文会有例子介绍)。
示例 {{data-picker}}
假设有一个组件{{date-picker}},用于选择日期。由于这是一个组件,在调用组件的模板
index.hbs对应的控制器
index.js无法获取到选择的时间。
如何才能把用户选择的日期输入发送到控制器中呢?你可以参考下面的代码实现:
{{! index.hbs}} 选择生日:{{data-picker pickedDate="setBirthday"}}
当用户选择日期,首先会触发组件类里的定义的
action方法,比如下面的代码:
export default Ember.Component.extend({ actions: { pickedDate: function(params) { // 发送到控制器中的setBirthday方法, this.sendAction("setBirthday", params); } } }); // 或者写成下面的形式 export default Ember.Component.extend({ //selectedDate: null, click: function() { var date = ''; //选择的日期 // pickedDate必须与模板中设置的参数名一致 this.sendAction("pickedDate", date); } });
如上代码调用之后,用户选择日期这个行为会发送到控制器执行,可以在控制器中获取用户选择的日期数据。
export default Ember.Controller.extend({ actions: { // 参数date就是在组件类传递过来的参数 setBirthday: function(date) { // 处理date的逻辑 this.set("userBirthday", date); } } });
上述三个文件的调用可以用下图来表示更加准确:
这种情况经常会在设置某个状态的时候用到,比如需要根据某个标记显示、隐藏div获取是设置选中状态。
下面三个文件是一个完整项目中使用上述特性的示例:
调用组件的模板
组件类
控制器
关于这个特性更多介绍请看官方文档介绍。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享
- 如何创建对象以及jQuery中创建对象的方式
- 数组方法汇总