Meteor 如何将数据上下文标记为已更改?

Meteor 如何将数据上下文标记为已更改?,meteor,iron-router,Meteor,Iron Router,我有一个页面,处理来自url的一些查询数据,如localhost/home?foo=bar。 然后它将JSON发送到某个服务器的某处。这很管用。 使用iron router,我可以像这样处理表单提交:router.go('home',{},{query:queryObjectVar}),这同样有效 因此,当您使用foo=“somethingelse”提交表单时,您将进入localhost/home?foo=somethingelse,页面大部分不会重新加载,因为meteor magic看起来非常

我有一个页面,处理来自url的一些查询数据,如
localhost/home?foo=bar
。 然后它将JSON发送到某个服务器的某处。这很管用。 使用iron router,我可以像这样处理表单提交:
router.go('home',{},{query:queryObjectVar})
,这同样有效

因此,当您使用
foo=“somethingelse”
提交表单时,您将进入
localhost/home?foo=somethingelse
,页面大部分不会重新加载,因为meteor magic看起来非常快,JSON是使用foo=somethingelse发送的,一切都很好

但是,如果您在
localhost/home?foo=var
中,然后使用
Router.go(…)
转到相同的路径,包含查询,则url不会更改,页面也不会发送JSON内容。在大多数情况下,这很好,因为技术上没有任何变化,所以不需要做任何事情。但是,我希望它的行为就像url改变了一样

我该怎么做

目前,我已将模板连接到查询,如下所示:

Router.route('home', {
  data: function() { return this.params.query }
})

我不确定这是否是你想要的,但你可以通过额外导航来改变路线。 通常,在提交表单后,您希望用户知道表单是以某种方式接收或处理的。 我建议创建一个只处理处理过程的额外路径,比如/home/process。让表单提交上的事件处理程序导航到流程路由。路由的操作基于this.params.query发送json文件。 发送json后(我使用console.log,但更好的方法是Meteor.call('here__will_sent_json',this.param.query),呈现一个模板,让用户知道数据已发送。现在的诀窍是:在模板中有一个链接或按钮,可以导航到/主页或您希望用户指向的任何内容

模板

<template name="main">
    <div>Sample application</div>
    {{> yield}}
</template>

<template name="mainPage">
    <div>Main page</div>
    <a href="{{ pathFor 'home'}}">Home</a>
</template>

<template name="home">
    <div>Home page</div>
    {{> form}}
</template>

<template name="form">
    <form id="myForm" method="get">
        <input type="text" name="foo">
        <input type="submit" value="Save">
    </form>
</template>

<template name="finishedSending">
    <div>finishedSending!</div>
    <a href="{{ pathFor route='home'}}">go to main page</a>
</template>

我不确定这是否是你想要的,但你可以通过额外导航来改变路线。 通常,在提交表单后,您希望用户知道表单是以某种方式接收或处理的。 我建议创建一个只处理处理过程的额外路由,类似于/home/process。让表单submit上的事件处理程序导航到流程路由。路由的操作根据this.params.query发送json文件。 发送json后(我使用console.log,但更好的方法是Meteor.call('here__will_sent_json',this.param.query),呈现一个模板,让用户知道数据已发送。现在的诀窍是:在模板中有一个链接或按钮,可以导航到/主页或您希望用户指向的任何内容

模板

<template name="main">
    <div>Sample application</div>
    {{> yield}}
</template>

<template name="mainPage">
    <div>Main page</div>
    <a href="{{ pathFor 'home'}}">Home</a>
</template>

<template name="home">
    <div>Home page</div>
    {{> form}}
</template>

<template name="form">
    <form id="myForm" method="get">
        <input type="text" name="foo">
        <input type="submit" value="Save">
    </form>
</template>

<template name="finishedSending">
    <div>finishedSending!</div>
    <a href="{{ pathFor route='home'}}">go to main page</a>
</template>

你试过在路由器之前添加
e.preventDefault()
吗?go?@jasenkoh是的。这是使用iron Router处理表单的一部分。你解决了这个问题吗?如果解决了,你能发布它吗?我没有。我正在处理一个问题来替换这个问题。你试过添加
e.preventDefault()吗
路由器之前。开始
?@jasenkoh是的。这是使用iron Router处理表单的一部分。你解决了这个问题吗?如果解决了,你能发布它吗?我没有。我正在研究一个问题来取代这个问题。嗯,额外的导航是我想要避免的。嗯,额外的导航是我想要避免的。