mithril.js - 在第一个动作时停止 mithrill 重绘
问题描述
我正在使用秘银编写单页应用程序。该页面在主组件的 oninit 中使用 m.request() 从服务器加载一些数据:
var root = document.getElementById("main");
var Data = {
fetch: function () {
m.request({
method: "GET",
url: "/api/read"
})
.then(function (items) {
// init models with data
});
}
}
var Home = {
oninit: Data.fetch,
view: function (vnode) {
return m("div", [components]);
}
}
m.route(root,
"/",
{
"/": Home
});
数据是一个巨大的 json,该页面通过确保满足某些外键约束来帮助编辑 json,并更好地对其进行可视化。一切都按预期工作,直到调用一个组件,该组件实际上向我拥有的任何 json 对象添加了一个全新的条目。在这个阶段页面重新加载,数据被再次获取,所以我丢失了所有的更改。它只发生一次,而且只发生在这个电话上:
jsonModel[propertyName].push(JSON.parse(newObject))
在第一次重绘之后,我可以随意修改页面,这个问题不会再发生了。我什至可以在没有它发生的情况下刷新。
我在我的结构中做一些根本错误的事情吗?可以防止这种刷新吗?
解决方案
听起来您想调用thenevent.preventDefault()
的onclick
处理程序<button>
,以防止它自动提交表单。
您可以采取其他一些方法,但这将是最简单的。
推荐阅读
- javascript - 在这种情况下,我怎么能停止表单提交?
- python - keras lstm翻译模型在添加或删除一个单词时预测错误
- linux - 回答为否时重复回声
- reactjs - 为什么使用 bindActionCreator 而不是传递对象
- java - 如何用杰克逊反序列化空字符串?
- google-analytics - 平均会话持续时间总计不正确
- node.js - Node.js 解码 Base64 图像并通过 API 保存
- reactjs - Adonisjs 和 Nextjs 实现
- android - Unity Android 解决失败
- angular - Angular 4 在 IE11 中不起作用