javascript - 如何从路由更改 Ember JS 中字段的属性

标签 javascript ember.js

在我的应用程序中,我有一个包含 2 个字段的模板文件(例如 name1/name2)。 基于 route 的一个参数(“偏好”),我想在屏幕上显示食谱 1 或食谱 2。 例如:如果偏好是蔬菜,我应该显示食谱 1,否则显示食谱 2。 我尝试了如下方法,但没有成功。

 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.$ 语句没有任何区别。请帮忙。

最佳答案

首先,您不应该在 beforeModel 钩子(Hook)内编写 Ember.$ 。那是错误的。当 beforeModel 钩子(Hook)被调用时,DOM 还没有准备好。我希望您创建组件并将 preference 属性传递给组件,并检查是否在 hbs 中显示它

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

{{my-receipe preference=preference }}

我的收据.hbs

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

my-receipe.js

创建 isVeg 计算属性,如果首选项为 veg,该属性将返回 true。

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

关于javascript - 如何从路由更改 Ember JS 中字段的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090601/

相关文章:

javascript - Node.js 和 Express : How to return response after asynchronous operation

Javascript类型检查我做对了吗?

ember.js - 不想在 Ember.Collection View 中使用任何标签(包括默认的 div 标签)

javascript - Webpack 的 bootrstrap-sass 错误 : Bootstrap´s JavaScript requires jQuery

javascript - Ext-JS GridPanel 基于行数的动态高度

javascript - 悬停在输入范围上时显示时间

javascript - Controller 分配的模型无法从组件访问

jquery - EmberJS 应用程序...可以与 UI 框架集成吗?

ember.js - ember.js 中的 '[]' 属性和 '@each' 属性有什么区别?

ember.js - 使用 Ember 的 "observes(..)"观察一些数组的修改