如何基于模型参数渲染组件

时间:2013-11-24 22:14:40

标签: ember.js

我需要根据模型的属性渲染模板。

我的策略是为句柄栏模板使用自定义if块助手,如下所示:

{{#ifequals type 'cars'}}
   {{cars-component}}
{{/ifequals}}
{{#ifequals type 'planes'}}
   {{planes-component}}
{{/ifequals}

但是我无法创建一个块帮助器来解析模板传递给帮助器的参数。

如果我使用Handlebars.registerHandlebars,它会解析变量的变量名。

我需要这样做的原因是因为它是插件框架的一部分。

1 个答案:

答案 0 :(得分:1)

选项块(特殊if语句)在ember把手助手中无法正常工作。 https://github.com/emberjs/ember.js/issues/2237

isCar: Ember.computed.equals('type', 'cars')
isPlane: Ember.computed.equals('type', 'planes')

{{#if isCar}}
   {{cars-component}}
{{/if}}
{{#if isPlan}}
   {{planes-component}}
{{/if}}

看起来你几乎可以做到,但是它存在问题,正如上面的github问题所指出的那样。

Ember.Handlebars.helper('iff', function(value,property, options) {
  if(value === property){
    return options.fn.apply(); 
  } else {
    return options.inverse.apply(); 
  }
});

http://emberjs.jsbin.com/UhOWeWiJ/1/edit

http://emberjs.jsbin.com/UhOWeWiJ/2/edit

当您尝试实现类似这样的内容并且值实际发生更改时,您将收到绑定块错误

https://github.com/emberjs/ember.js/issues/2237

Uncaught你不能在渲染过程之外使用appendChild

http://emberjs.jsbin.com/UhOWeWiJ/3/edit http://emberjs.jsbin.com/UhOWeWiJ/3/edit