如何以正确的方式嵌套组件
How to nest components in a proper way
我从EMBER开始.js,我有一些疑问:
假设我正在创建一个简单的聊天,只是为了示例。我有一个包含用户列表的左侧面板,以及一个包含发送消息的右侧面板。
我考虑创建一个名为:users-list
的组件,该组件显示用户列表。该列表中的每个成员都应该是另一个称为 user
的组件。
这意味着user
组件负责绘制自己,包括用户名、上次发送的消息、名称颜色等......(都是属性),并且在其名称旁边的按钮中也有一些操作:changeName,changeColor,leaveRoom。
而users-list
负责维护用户列表并使用user
组件显示它们。
所以这里的问题是:
- 这是正确的方法吗?
- 如果是:如何从
users-list
组件、子组件user
组件内部的操作(leaveRoom
操作)中删除项目? - 如果不是:我应该如何实现?我想把责任隔离开来。
- 这是正确的方法吗?
是的,它是。但是你必须在组件名称中使用连字符,所以user
组件应该变成这样的东西:user-component
.
如果是:如何从用户列表组件中删除项目,从 子用户组件内部的操作(离开房间操作)?
请参阅工作演示。
在模板users-list
将操作(在 users-list
中定义)传递给user-component
:
{{#each model as |user|}}
{{user-component model=user leaveRoom=(action 'leaveRoom')}}
{{/each}}
users-list
中的操作leaveRoom
:
actions: {
leaveRoom(user) {
alert('User-list: user ' + user.name + ' wants to leave room.');
}
}
然后,我们有一个简单的user-component
模板,带有触发user-component
leaveRoom
操作的按钮:
{{model.name}} - <button {{action 'leaveRoom' model}}>Leave room</button>
user-component
中的操作leaveRoom
调用从 users-list
传递给组件的操作。因此,user-component
中的leaveRoom
如下所示:
actions: {
leaveRoom(user) {
this.get('leaveRoom')(user);
}
}
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 如何以编程方式添加到可变嵌套对象中
- 嵌套视图的推荐方式是什么
- 在 Var 中嵌套 parseInt 的最佳方式
- 如何在 Python 和 JavaScript 中以相同的方式散列“json”嵌套字典
- 使用 jQuery 创建嵌套 HTML 元素的最佳方式
- d3 嵌套 SVG 在 Firefox 中的绘图方式与在 Chrome 中的打印方式不同
- 如何以正确的方式嵌套组件
- 显示嵌套uls的正确方式是什么
- 处理嵌套Promises的最佳方式(蓝鸟)
- 处理嵌套在组件中的组件的JS事件的最佳方式
- 如何以嵌套方式将预定义指令(ng-click)与自定义指令一起使用
- 在Sammy.js模板中呈现嵌套对象列表的最佳方式
- 以特定的方式遍历嵌套对象
- 以编程方式将节点扩展到可嵌套项中的当前项
- 以与JSON相同的方式嵌套Sencha-touch关联模型
- JavaScript,一种检查嵌套对象属性是否为null/undefined的优雅方式
- 以编程方式生成嵌套的for循环
- 以这种方式嵌套多个react组件可以被视为反模式吗?