我正在使用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'),
});
如果你能指出我正确的方向,我会爱你。谢谢!
答案 0 :(得分:0)
setupController
不需要(它在您的路线中执行与model
挂钩完全相同的工作,在model
挂钩之后已经完成了#&#;}# 39;工作。删除它。
至于你的问题,我不认为Ember.Controller
代理模型属性。您需要使用Ember.ObjectController
来执行此操作,但看到Ember.ObjectController
在Tom Dale的点击列表中(它最终会消失),您真的应该访问模板中的stackTitle
为model.stackTitle
。