作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个组件 - addProjectForm
和 listProjects
。它们都是根模块内的嵌套组件。每当我使用表单添加项目时,我希望它立即出现在列表中。
为了实现这一点,我必须将 Controller 实例传递给每个组件,如下所示:
var RootComponent = {};
rootComponent.controller = function() {
this.example = 'test variable';
}
rootComponent.view = function(ctrl) {
return [
m.component(addProjectForm, ctrl),
m.component(listProjects, ctrl)
];
}
然后 listProjects
组件例如如下所示:
var listProjects = {
controller: function(root) {
this.root = root;
},
view: function(ctrl) {
console.log(ctrl.root.example);
}
};
这样我就可以继续调用顶层的方法,但我不太喜欢像这样传递 Controller 实例。我还应该采取其他方法吗?
最佳答案
我认为这就是您正在寻找的:
Mithril.js: Should two child components talk to each other through their parent's controller?
解决这个常见问题的一种新方法是使用 Facebook 开发的类似 Flux 的架构:
https://facebook.github.io/flux/
编写自己的调度程序是很简单的。这是其他人与 Mithril 一起构建的示例:
https://gist.github.com/MattMcFarland/25fb4f0241530d2f421a
这种方法的缺点是使用 m.withAttr 会有点反 Flux,因为 View 不应该直接写入调度程序范例中的模型。
关于javascript - 强制组件从 Mithril.js 中的不同组件重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33425274/
我是一名优秀的程序员,十分优秀!