我遇到了一个问题,我无法使用此jsbin中的灯具创建。
上面的代码实际上是链接到把手帮助器的包装器:
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);
});
我想要实现的是一个通用链接到帮助器,它接受我的任何ember-data模型并返回一个链接:
{{resource-link-to contact}}
{{resource-link-to user}}
等
这适用于灯具,但不适用于真正的适配器,因为当代码将执行转发到真正的链接帮助器时,或者可能是解决此问题的另一种方式时,并不总是加载模型?
我想要做的是创建一个观察者,当资源加载时重新呈现LinkView:
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重新渲染?