2
我一直在努力使用Sproutcore 2.0獲得綁定正確的一對多關係。Sproutcore 2.0一對多關係
我的模板是這樣的:
<script type="text/x-handlebars">
{{#collection contentBinding="HTH.projectsController.content"}}
<h3>{{content.title}}</h3>
{{#collection contentBinding="content.tasks"}}
<span>{{content.title}}</span>
{{/collection}}
{{/collection}}
</script>
雖然實際的代碼如下所示:
HTH.Project = SC.Record.extend({
title: SC.Record.attr(String),
tasks: SC.Record.toMany('HTH.Task',{
isMaster: YES,
inverse: 'project'
})
});
HTH.Task = SC.Record.extend({
title: SC.Record.attr(String),
project: SC.Record.toOne('HTH.Project', {
isMaster: NO
})
});
HTH.Project.FIXTURES = [ { guid: 1, title: 'Send man to moon', tasks: [1,2]},
{ guid: 2, title: 'Master handstand', tasks: [3]}];
HTH.Task.FIXTURES = [ { guid: 1, title: 'Find rocket', project: 1},
{ guid: 2, title: 'Find fuel', project: 1},
{ guid: 3, title: 'Stand on hands', project: 2}];
HTH.store = SC.Store.create().from(SC.Record.fixtures);
// Controllers
HTH.projectsController = SC.ArrayProxy.create({
content: HTH.store.find(HTH.Project)
});
現在我可以更新的任務,而這些將更新UI。例如:
HTH.store.find(HTH.Project).get('firstObject').set('title','Updated the title!');
但是,如果我創建一個新項目,並動態地添加到用戶界面將增加新的項目任務,但從來沒有添加任何報價:
var project = HTH.store.createRecord(HTH.Project, {title: "New" });
var task = HTH.store.createRecord(HTH.Task, {title: "New task" });
project.get('tasks').pushObject(task);
我敢肯定這是由於綁定不能按預期工作,或者需要觀察的屬性。誰能幫忙?
備註:SproutCore 2.0成爲Ember.js之前詢問過此問題。它還引用了SproutCore 1.x數據存儲的非官方端口,該存儲已被官方支持的ember數據庫取代。