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을 관찰자를 만들 내가하고 싶었던 무엇입니까?
이것은 재미있는 개념입니다. 비동기 모델이 반환되기 전에 렌더링 될 템플릿 영역이 표시되지 않습니다. – Kingpin2k
또 다른 방법은 뭔가 수행하는 LinkView의 하위 클래스가있을 수 있습니다. LinnkView의 작동 방식을 더 잘 이해할 필요가 있습니다. – dagda1
링크보기가 바운드 도우미인데, args 개체에서 Em.set을 사용하여 링크를 업데이트했는지 확인해 보셨습니까? – Kingpin2k