我的数据显示在一页上而不是另一页显示在Ember上

时间:2015-04-09 23:10:01

标签: ember.js ember-data

我正在使用Ember Data构建一个Web应用程序,并且某种模式显示在一个模板而不是另一个模板上。我的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'),
});

如果你能指出我正确的方向,我会爱你。谢谢!

1 个答案:

答案 0 :(得分:0)

setupController不需要(它在您的路线中执行与model挂钩完全相同的工作,在model挂钩之后已经完成了#&#;}# 39;工作。删除它。

至于你的问题,我不认为Ember.Controller代理模型属性。您需要使用Ember.ObjectController来执行此操作,但看到Ember.ObjectController在Tom Dale的点击列表中(它最终会消失),您真的应该访问模板中的stackTitlemodel.stackTitle