![](/img/trans.png)
[英]remove template in renderTemplate ember route after loading is finished
[英]If I use renderTemplate how to refresh route in ember?
我的两条路线具有相同的模板和控制器,因此我的路线希望使用 renderTemplate 相同的模板和控制器,例如:
OrderRoute = Ember.Route.extend
model: (params)->
Product.findAll(params)
setupController: (controller, model)->
@controllerFor('product').set('model', model)
renderTemplate: ->
@render 'products',
controller: 'products'
actions:
queryParamsDidChange: ->
@refresh()
控制器:
ProductController = Ember.Controller.extend
queryParams: ['number']
number: null
代码看起来没问题,但是当我使用时我发现query params
无法工作。
jsbin: http ://emberjs.jsbin.com/gegonemadu/1/edit
我无法用谷歌搜索任何关于这个问题的信息。
我知道如果我使用OrderRoute
和OrderController
路由和控制器具有相同的名称,所有的想法都会好的。 但我的 2 条路线想要具有相同的模板,就像:
/命令
/其他
2 路由 url 使用product
模板和控制器
我正在使用{{partial}}
,就像: http : //emberjs.jsbin.com/bifanateku/1/edit?html,js,console
这是可以工作的,但我认为如果我可以使用renderTemplate
代码会更清晰。
也许有更好的方法来解决这个问题?
对于查询参数,控制器和路由应该一起工作。
在您的情况下,您正在使用order
路由,该路由需要来自您没有的order
控制器的查询参数。
所以你要么为路由定义一个不同的控制器,例如
contollerName: 'product',
或者将查询参数定义移动到order
控制器并将它们绑定到product
控制器的属性。
这是一个毛茸茸的设置,我相信你可能首先做错了什么。
您不应该为此使用控制器。 使用组件。
Ember 正在弃用控制器并仅使用组件。 但就目前而言,控制器仍然是您页面的入口点。 剩下的应该是组件!
以下是您应该如何做:
App.Router.map(function() {
this.route('foo');
this.route('bar')
});
App.FooController = Ember.Controller.extend({
queryParams: ['number'],
number: null
});
App.BarController = Ember.Controller.extend({
queryParams: ['number'],
number: null
});
<script type="text/x-handlebars" data-template-name="foo">
{{x-product number=number}}
</script>
<script type="text/x-handlebars" data-template-name="bar">
{{x-product number=number}}
</script>
<script type="text/x-handlebars" data-template-name="components/x-product">
Search Product:
{{input value=number}}
<ul>
{{#each model}}
<li>{{this}}</li>
{{/each}}
</ul>
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.