2014-01-19 1 views
0

jsbin에 조명기를 사용하여 만들 수없는 문제가 있습니다.Ember.js - 핸들 막대 도우미에서 다시 렌더링하기 위해 LinkView 가져 오기

Ember.Handlebars.registerHelper('resource-link-to', function(name, options) { 
    var args = Array.prototype.slice.call(arguments, 1); 
    var resource = this.get(name); 
    var resourceRoute = resource.humanize(); 

    if (!options.fn) { 
    options.types = ['STRING', 'STRING', 'ID']; 
    options.contexts = [this, this, this]; 
    args.unshift(name); 
    args.unshift(resourceRoute); 
    args.unshift(resource.get('displayName')); 
    } else { 
    options.types = ['STRING', 'ID']; 
    options.contexts = [this, this]; 
    args.unshift(name); 
    args.unshift(resourceRoute); 
    } 

    var observer, 
    _this = this; 

    if (!resource.get('isLoaded')) { 
    observer = function() { 
     if (resource.get('isLoaded')) { 
     //WHAT CAN I DO HERE TO GET THE LinkView to rerender? 
     return resource.removeObserver('isLoaded', observer); 
     } 
    }; 
    resource.addObserver('isLoaded', observer); 
    } 

    return Ember.Handlebars.helpers['link-to'].apply(this, args); 
}); 

는 내가 달성하고자하는 것은 일반적인 링크에 도우미 내 엠버 - 데이터 모델 중 하나를 취하고을 반환 :

은 위의 코드는 정말 링크하는 핸들 도우미의 래퍼입니다 링크 :

{{resource-link-to contact}} 
{{resource-link-to user}} 

이 일정으로 잘 작동하지만 모델이 항상로드되지 않기 때문에 코드가 간부 전달할 때 진정한 어댑터가 작동하지 않습니다 실제 링크에 대한주의 - 도우미 또는 다른 방법으로이 문제를 해결할 수 있습니까?

var observer, 
    _this = this; 

    if (!resource.get('isLoaded')) { 
    observer = function() { 
     if (resource.get('isLoaded')) { 
     //WHAT CAN I DO HERE TO GET THE LinkView to rerender? 
     return resource.removeObserver('isLoaded', observer); 
     } 
    }; 
    resource.addObserver('isLoaded', observer); 
    } 

누구 나는 LinkView 다시 렌더링하는 얻을 수있는 방법 어떤 생각 :

다시 렌더링 리소스는 다음과 같이로드 된 LinkView을 관찰자를 만들 내가하고 싶었던 무엇입니까?

+0

이것은 재미있는 개념입니다. 비동기 모델이 반환되기 전에 렌더링 될 템플릿 영역이 표시되지 않습니다. – Kingpin2k

+0

또 다른 방법은 뭔가 수행하는 LinkView의 하위 클래스가있을 수 있습니다. LinnkView의 작동 방식을 더 잘 이해할 필요가 있습니다. – dagda1

+0

링크보기가 바운드 도우미인데, args 개체에서 Em.set을 사용하여 링크를 업데이트했는지 확인해 보셨습니까? – Kingpin2k

답변

0

나는 here과 관련된 해결책에 대해 블로그를 보냈습니다.

관련 문제