使用Ember-App-Kit扩展EmberDefaultResolver



我正在制作一个自定义解析器,基于以下模式,来自Robin Ward[视频/15秒]这是一个让移动设备查找"mob_template"的技巧。

App.Resolver = EmberDefaultResolver.extend({
  resolveTemplate: function(parsedName){
    var t = this._super(parsedName);
    if App.mobileActive){
        return this._super('mob_' + parsedName) || t;
    }
    return t;
  }
});

然而,我使用Ember App Kit,它使用一个特殊版本的解析器:

我真的不知道里面发生了什么,或者我需要做什么来产生类似的功能。有人知道吗?

我试过这样做,但结果没有解决:

var App = Ember.Application.extend({
  //...
  Resolver: Ember.DefaultResolver.extend({
          resolve: function(fullName) {
            var parsedName = this.parseName(fullName),
                resolveMethodName = parsedName.resolveMethodName;
            if (!(parsedName.name && parsedName.type)) {
              throw new TypeError("Invalid fullName: `" + fullName + "`, must be of the form `type:name` ");
            }
            if (this[resolveMethodName]) {
              if (window.screen_type == 'mobile'){
                var resolved = this[resolveMethodName](parsedName + '_mobile');
              } else{
                var resolved = this[resolveMethodName](parsedName);
              }
              if (resolved) { return resolved; }
            }
            return this.resolveOther(parsedName);
          },
  })
});

显然parsedName不是EAK解析器中模板名称的字符串,但它有一些表示模板名称的道具,parsedName。fullNameWithoutType为目标:

var CustomResolver = Resolver.extend({
    resolveTemplate: function(parsedName){
      var resolve = this._super(parsedName);
      if (['foo','bar'].indexOf(window.special_prop) > -1){
        var orig__parsedName_name = parsedName.name;
        parsedName.name = parsedName.name + '_' + window.special_prop;
        parsedName.fullName = parsedName.fullName + '_' + window.special_prop;
        parsedName.fullNameWithoutType = parsedName.fullNameWithoutType + '_' + window.special_prop;
        resolve = this._super(parsedName) || resolve;
      }
      return resolve;
    } });

var App = Ember.Application.extend({   //...   Resolver: CustomResolver });

相关内容

  • 没有找到相关文章

最新更新