2014-03-25 5 views
0

pattern below from Robin Ward [video/15sec] 을 기반으로 사용자 정의 해결 프로그램을 만들고 있습니다. 모바일 장치에서 "템플릿을로드하기 전에 먼저 mob_template.hbs"를 찾게하는 트릭입니다. HBS "Ember-App-Kit를 사용하여 EmberDefaultResolver를 확장합니다.

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

나는 resolver의 특별 버전 사용 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); 
      }, 
    }) 
}); 

답변

1

은 분명히 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 });