2015-04-09 3 views
0

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

Данные, которые я пытаюсь показать, это {{stackTitle}} в стеке модели.

Я использую локальный адаптер для хранения данных, предоставляемый через учебник Ember ... возможно, это проблема?

Вот мой шаблон (тот, который не отображает данные):

<script type="text/x-handlebars" data-template-name="stack"> 
    <div class="container-fluid"> 
     <div class="row"> 
     <a href="#"><button class="btn btn-default" type="button">Back</button></a> 

     <button class="btn btn-default" type="submit">Save</button> 
     </div> 

     <h1> 
      <label {{action "editStack" on="doubleClick"}}>{{stackTitle}}</label> 

      {{input 
      value=stackTitle 
      action="createStack"}} 

{{debugger}} 
     <div>{{stackTitle}}</div> 

      </h1> 



     {{partial "todos"}} 

    </div> 
    </script> 

А вот мой маршрутизатор:

Todos.StackRoute = Ember.Route.extend({ 
    model: function(params) { 
    return this.store.find('stack', params.stack_id); 
    }, 
}); 

Мой контроллер:

Todos.StackController = Ember.Controller.extend({ 

    setupController: function(controller, model) { 
     controller.set('model', model); 
    }, 

    actions: { 

     createStack: function() { 

      var title = this.get('stackTitle'); 
      if (!title.trim()) { return; } 

      var stack = this.store.createRecord('stack', { 
       stackTitle: title, 
      }); 

      stack.save().then(function() { 
       var promises = Ember.A(); 
       stack.get('todos').forEach(function(todo) { 
        promises.push(todo.save()); 
       }); 
       Ember.RSVP.Promise.all(promises).then(function(resolvedPromises){ 
        alert('all saved!'); 
       }) 
      }); 

      console.log(this.store.all('stack')); 
    }, 
} 
}); 

Моя модель:

Todos.Stack = DS.Model.extend({ 
    stackTitle: DS.attr('string'), 
    todos: DS.hasMany('todo', {async: true}), 
    isTaken: DS.attr('boolean'), 
}); 

Мне бы очень хотелось, если бы вы могли указать мне в правильном направлении. Спасибо!

ответ

0

setupController не нужен (он делает точно такую ​​же работу, как model крюк в маршруте, после того, как model крючок, как уже сделали это работа. Удалите его.

Что касается вашего вопроса, я не думаю свойства Ember.Controller прокси модели. вы должны были бы использовать Ember.ObjectController, чтобы сделать это, но, видя, как Ember.ObjectController находится в списке хит Тома Дейла (он уходит в конце концов), на самом деле вы должны получить доступ к stackTitle в шаблонах в качестве model.stackTitle.

+0

это полностью Спасибо. – sunoceansand