如何从路由

时间:2017-02-07 13:02:47

标签: javascript ember.js

在我的应用程序中,我有一个包含2个字段的模板文件(比如name1 / name2)。 根据路线中的一个参数(“首选项”),我想在屏幕上显示Recipe1或Recipe2。 例如:如果首选项是veg,我应该显示Recipe1否则Recipe2。 我试过这个如下,但它没有用。

 export default Ember.Route.extend({
 beforeModel(){
 if (preference==='veg'){
     console.log("Inside Veg..");
     Ember.$("#Recipe2").attr("type","hidden");
 }
 else {
     console.log("Inside Non Veg..");
     Ember.$("#Recipe1").attr("type","hidden");
 }

我所看到的是它进入if / else循环但是ember。$ statements没有任何区别。请帮忙。

1 个答案:

答案 0 :(得分:1)

首先,你不应该在Ember.$钩子内写beforeModel。那是错的。当beforeModel挂钩被调用时,DOM将不会准备就绪。我更喜欢你创建组件并将preference属性传递给组件,如果检查以hbs显示它

创建my-receipe组件并将其包含在template.hbs

{{my-receipe preference=preference }}

MY-receipe.hbs

{{#if isVeg}}
 <input type="text" id="Recipe1" />
{{else}}
<input type="text" id="Recipe2" />
{{/if}}

MY-receipe.js

创建isVeg computed属性,如果首选项为veg,则返回true。

export default Ember.Component.extend({
    isVeg: Ember.computed('preference', function() {
        return Ember.isEqual(this.get('preference'), 'veg');
    })
})