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}} 

т.д.

Это прекрасно работает с сантехникой, но не работает с реальным адаптером, так как модель не всегда загружается, когда код перенаправляет Exec на реальную связь - с помощником или, возможно, другим способом обойти эту проблему?

То, что я хотел сделать, это создать наблюдателя, который повторно визуализирует 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); 
    } 

Anybody любая идея, как я могу получить LinkView повторного рендеринга?

+0

Это забавная идея, я не вижу никаких областей шаблонов, которые будут отображаться до возвращения модели асинхронного вызова. – Kingpin2k

+0

Другим способом может быть подкласс LinkView, который что-то делает. Мне нужно лучше понять, как работает LinnkView. – dagda1

+0

link view - связанный помощник, вы пробовали просто использовать Em.set на объекте args и посмотреть, обновляется ли ссылка? – Kingpin2k

ответ

0

Я рассказал о решении, которое я придумал с here.

Смежные вопросы