2013-08-13 6 views
1

У меня проблема с ссылкой, которая указывает на себя. Реальная проблема заключается в приложении, которое имеет боковую панель с набором ссылок. При первом щелчке по ссылке модель и представление загружаются и отображаются должным образом. Однако при втором нажатии вид и/или модель исчезают.Ember.js {{linkTo}} сам по себе не отображает

Я сконцентрировал проблему в этом jsfiddle. Маршрут указателя отображает список ссылок, и при нажатии на одну из ссылок он отображает детали. На странице подробностей у меня есть ссылка на себя, но когда я нажимаю ее, модель не отображается.

Шаблон подробно показывает штраф содержимого, но обратите внимание на {{FirstName}} или {{LastName}}

<script type="text/x-handlebars" data-template-name="item"> 
    <h2>Item Content:</h2> 
    {{#linkTo "item" id}}Reload me{{/linkTo}} 
    {{content}} 
    <ul> 
    <li>{{firstName}} {{lastName}}</li> 
    </ul> 
</script> 

Я думаю, что вопрос похож на Ember.js - linkTo error on second call

Обновленный образец

Вот новый пример With linkTo at the top level, где элемент {{linkTo}} находится в шаблоне приложения верхнего уровня

<script type="text/x-handlebars" data-template-name="application"> 
    {{#linkTo "test" 0}}Test 0{{/linkTo}} 
    {{outlet}} 
</script> 

После @intuitivepixel решения, используя действие дает мне the same result

<script type="text/x-handlebars" data-template-name="application"> 
    <a href="#" {{action reloadMe "test" 0}}>Test 0</a> 
    {{outlet}} 
</script> 

ответ

0

Не все может быть сделано с {{linkTo}} помощником, IMO для такого рода функции (например, перезагрузка) вы должны пойти на {{action}} помощника вместо.

сначала определить действие, которое делает маршрутизацию для вас при вызове:

App.TestRoute = Ember.Route.extend({ 
    events: { 
    reloadMe: function(route, content) { 
     this.transitionTo(route, content); 
    } 
    }, 
    serialize: function(model) { 
    return {id: model.id}; 
    } 
}); 

А потом в шаблоне:

<a href="#" {{action reloadMe "test" content}}>Reload me</a> 

Смотрите здесь, как вы могли бы реализовать: http://jsfiddle.net/FSd6H/4/

Надеюсь, поможет.

+0

Это действительно работает в демонстрации, но не помогает для моего оригинального случая, когда linkTo находится в другом шаблоне (в моем случае боковая панель) – Krumpi

+0

Если ваше действие по перезагрузке находится в шаблоне приложения, переместите событие перезагрузки на маршрут приложения события hash, чтобы получить работу – selvagsz

+0

Вот что я сделал в [третьей скрипке] (http://jsfiddle.net/krumpi/FSd6H/8/). Если вы используете ссылку в нижней части, модель показывает отлично, но не со ссылкой или действием на первой строке – Krumpi

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