如何在 emberjs 组件中重新分配模板
How to re-assign template in emberjs component?
我想要的是,当我单击组件的链接时,模板将随着其后续状态(其他一些html代码)而动态更改。
我所做的是在初始化过程中,每个组件的模板都可以动态显示。当我单击链接添加、邀请或接受时,组件的属性状态已相应更改,并触发了功能状态更改,但组件的模板仍未更改。
(我花了几个小时做这个,我要疯了。
这是 emberjs.jsbin.com 上的代码:
http://emberjs.jsbin.com/laxeqigepu/2/
作为输出,html 已更改,可以注销。但是为什么布局没有改变呢?
console.log( html );
this.set('layout', Ember.Handlebars.compile(html));
尝试将这些案例放在模板中:
//templates/components/contact-invitation.hbs
{{#if zeroStatus}}
{{#if uidPositive}}
<a href="#" {{ action "send" }}><i class="success fa fa-plus"></i> Add</a>
{{#else}}
<a href="#" {{ action "send" }}><i class="success fa fa-plus"></i> Invite</a>
{{/if}}
{{#else}}
{{#if wait}}
Wait
{{#else}}
...
{{/if}}
{{/if}}
//components/contact-invitation.js
import Ember from "ember";
export default Ember.Component.extend({
zeroStatus: function() {
return this.get('status') === 0;
}.property('status'),
uidPositive: function() {
return this.get('uid') > 0
}.property('uid')
//etc.
});
这有点尴尬,因为 Handlebars 缺乏{{# else if }}
结构,也因为我对您的域了解不多——我的猜测可能是有比 zeroStatus
、oneStatus
等更好的解决方案。不过,这似乎是 Ember/Handlebars 中的惯用解决方案:在类中定义属性,并根据模板中的这些属性使用条件。
相关文章:
- Javascript / JQuery循环访问已发布的ajax数据字符串以为其分配新值
- 如果我不这样做会发生什么;t在javascript中的变量中分配新的Image
- 如果我为 JS 变量分配一个新值,它会破坏它的绑定吗?
- 在以下情况下,map 如何分配新值
- 如何将日期分配给新的日期对象
- 为函数中的现有数组(全局变量)分配新值不起作用.为什么
- 分配给新变量时,计数器值在循环中更改
- 当我将$scope分配给另一个变量并更改新变量上的监视值时,不会触发角度 $scope.$watch
- JS:如何为新创建的HTML元素分配ID
- 自动将事件处理程序分配给新元素
- 在javascript中实例化一个新类时,不将其分配给变量有什么害处
- 解构并分配给新变量,同时不起作用
- 当您将字符串文本传递给变量,然后将该字符串中的数据分配给新变量时,它叫什么
- 对jsproto和分配新属性感到困惑
- 在屏幕调整大小时为引导程序元素分配新类不起作用
- 将XML转换为JSON后,为对象分配新值
- JS中高效的字符串解析:如何创建不分配新字符串的子字符串
- 给对象分配新字段
- 在不分配新箭头助手的情况下更新箭头助手的困难
- 在 jQuery 中为对象数组中的对象分配新值