例如,我有下一条mitril路线。
window.location.assign(url);
我可以从外部将json数据发送到trackingController路由吗?
答案 0 :(得分:1)
是的,路线可以插值参数。在您的示例中,您有一个:numbers
参数,并且您的代码建议您使用JSON字符串。
秘银公开通过实体传递的数据的方法是通过the vnode
interface的attrs
属性。对于路由组件和路由解析器(例如您在此处使用的路由),请attrs
is a map of the URL parameters。
在此示例中,我使用encodeURIComponent
来允许在URL中引入JSON。我已经使渲染函数记录了从URI路径接收到的解析数据并公开了当前路由,还有一个文本框,您可以在其中编辑JSON结构并将其提交以重新路由并查看新结果。>
m.route.prefix("#");
m.route(document.getElementById('main'), "/trackingController/" + encodeURIComponent('[1,2]'), {
"/trackingController/:numbers": {
render: function(vnode) {
console.log(
'Received the following `numbers`:',
JSON.parse(vnode.attrs.numbers)
)
return [
m('h1', 'Hello from trackingController'),
m('p', 'Current route is ',
m('code', m.route.get())
),
m('form', {
onsubmit: function(e) {
e.preventDefault()
m.route.set(
"/trackingController/" +
encodeURIComponent(e.target.elements.input.value)
)
}
},
m('textarea#input', {
value: vnode.attrs.numbers,
style: {
background: '#444',
color: '#eee',
display: 'block',
padding: '1em',
},
}),
m('button', 'Go!')
),
]
}
}
})
<script src="https://unpkg.com/mithril/mithril.js"></script>
<div id=main></div>