首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逆HTMLBars助手

逆HTMLBars助手
EN

Stack Overflow用户
提问于 2015-03-03 03:36:35
回答 1查看 514关注 0票数 0

我正试着建立一个助手w/一个其他的块。

我只能找到把手的例子。它们表明options.inverse是一个函数,但对于我的HTMLBars助手来说,options.inverse是一个对象。(例如不可调用)

模板代码:

代码语言:javascript
复制
  {{#can 'audit' 'user' }}
    AUDIT_LINK_PLACEHOLDER
  {{else}}
    NO_AUDIT_LINK
  {{/can}}

助手代码:

代码语言:javascript
复制
Ember.Handlebars.registerHelper("can", function(verb, noun, options) {
  var abilities =  this.container.lookup('controller:application').currentAbilities;
  var sub_ability = abilities[noun] || {};
  var fn = (sub_ability[verb] || sub_ability['manage']) ? options.fn : options.inverse;
  return fn(this);
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-04 22:51:16

通常,您会将用户注入到所有控制器中,并且用户将拥有属性canAudit:

代码语言:javascript
复制
App.User = DS.Model.extend({
  canAudit: DS.attr('boolean')
});

你的模板看起来是这样的:

代码语言:javascript
复制
{{#if user.canAudit}}
  [ ... ]
{{else}}
  [ ... ]
{{/if}}

如果您不想处理注入,并且您的应用程序控制器上已经有了用户实例,那么最基本的方法是这样做:

代码语言:javascript
复制
App.YourController = Ember.Controller.extend({
  needs: ['application'],
  user: Ember.computed.alias('controllers.application.user')
});

设置完毕后,用户将可以在您的控制器内访问。

您可以在这里找到所需的一切,这取决于您想如何解决这个问题:

needs alias

http://emberjs.com/guides/understanding-ember/dependency-injection-and-service-lookup/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28823652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档