Ember.js не работает должным образом

0

В настоящее время я изучаю ember.js, и у меня возникла очень простая проблема: я не могу найти способ сделать шаблон внутри другого с помощью точек. Это файлы, которые у меня есть:

application.handlebar

<div class='navbar navbar-inverse navbar-fixed-top' role='navigation'>
    <div class='navbar-inner'>
        <div class='container'>
            <a class="brand" href="#">App</a>
            <div class='nav-collapse collapse'>
                <ul class='nav'>
                    <li>{{#linkTo 'application'}}Home{{/linkTo}}</li>
                    <li>{{#linkTo 'posts'}}Posts{{/linkTo}}</li>
                </ul>
            </div>
        </div>
    </div>
</div>
<div class='container' id='main'>
    <div class='content'>
        <div class='row'>
            <div class='span12'>
                <div class='page-header'></div>
                {{outlet}}
            </div>
        </div>
    </div>
</div>
</div>

posts.handlebars:

    <ul>
{{#each controller}}
  <li>
  {{title}}
  </li>
{{/each}}
</ul>

posts_routes:

App.PostsRoute = Ember.Route.extend({
    model: function() {

       return App.Post.find();
    }
});

router.js:

App.Router.map(function() {
    this.route('posts',{ path: '/posts' }); 
    this.route('application',{ path: '/' }); 
});

Вот что происходит: при загрузке приложения страница отображается в настоящее время с помощью навигационной панели и пустой белой страницы. Нажав на ссылку "Сообщения", вы увидите шаблон сообщений, но навигация исчезнет, как если бы шаблон замещения заменил весь шаблон приложения. Можете ли вы помочь мне понять, почему это происходит?

Теги:
ember.js

1 ответ

0

Внутренне ember использует ApplicationRoute, я думаю, что используя this.route('application',{ path: '/' }); вызывает конфликт.

Поэтому просто удалите this.route('application',{ path: '/' }); и все будет работать.

Если вам нужна домашняя/начальная страница, вы можете создать шаблон index.handlebars, потому что ember автоматически создает this.route('index',{ path: '/' }); , И измените linkTo 'application' на linkTo 'index', чтобы получить ожидаемое поведение.

Пожалуйста, присмотритесь к этой скрипке, чтобы увидеть эту работу http://jsfiddle.net/marciojunior/HpmwB/

  • 0
    Я видел вашу скрипку, и она работает, но она не работает в моем случае. Я все еще получаю такое же поведение, при котором шаблон "posts" заменяет всю страницу (навигационная панель исчезает). Есть ли какие-то другие детали, которые мне не хватает? Я написал свое приложение, используя это в качестве ссылки: github.com/dgeb/ember_data_example/tree/master/app/assets/…
  • 0
    Просто удалите this.route ('application', {path: '/'}); работал на меня. Вы получаете какую-то ошибку в консоли?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню