我遇到了一个问题,即Ember继续将相同的路线模型附加到路线上。
# ROUTER
MediaUi.Router.map(function () {
this.route('movie', { path: '/movie/:id' });
});
# ROUTE
MediaUi.IndexRoute = Ember.Route.extend({
'model': function() {
return MediaUi.Media.find();
}
});
# MODEL
MediaUi.Media = DS.Model.extend({
'type': DS.attr('string'),
'title': DS.attr('string'),
'director': DS.attr('string'),
'year': DS.attr('number'),
'url': DS.attr('string'),
'media': DS.attr('string'),
'_id': DS.attr('string'),
'description': DS.attr('string', { 'defaultValue': 'TBD' })
});x
DS.RESTAdapter.map('MediaUi.Media', {
'id': { 'key': '_id' }
});
DS.RESTAdapter.reopen({
url: 'http://localhost:3000'
});
#TEMPLATE
<table class="table">
<thead>
<tr>
<th>Title</th>
<th>Description</th>
<th>Actions</th>
</tr>
</thead>
{{#each item in model}}
<tr {{ bindAttr data-id="item._id" }}>
<td>{{#linkTo 'movie' item }} {{ item.title }} {{/linkTo}}</td>
<td><p>{{ item.description }}</p></td>
<td>
<button {{ action "launchModal" item target="view" }} class="btn btn-info">More Information</button>
<button class="btn btn-warning">Edit</button>
<button class="btn btn-danger">Remove</button>
</td>
</tr>
{{/each}}
</table>
{{ view MediaUi.ModalView }}
# JSON
{
"medias": [
{
"type": "movie",
"title": "The Dark Knight",
"director": "Christopher Nolan",
"year": 2008,
"url": "http://www.imdb.com/title/tt0468569/",
"media": "Blu-ray",
"_id": "51e2fc1b4c19500de6000001"
},
{
"type": "movie",
"title": "Inception",
"director": "Christopher Nolan",
"year": 2010,
"url": "http://www.imdb.com/title/tt1375666/",
"media": "Blu-ray",
"_id": "51e2fc1b4c19500de6000002"
},
{
"type": "movie",
"title": "The Dark Knight Rises",
"director": "Christopher Nolan",
"year": 2012,
"url": "http://www.imdb.com/title/tt1345836/",
"media": "Blu-ray",
"_id": "51e2fc1b4c19500de6000003"
},
{
"type": "movie",
"title": "Django Unchained",
"director": "Quentin Tarantino",
"year": 2012,
"url": "http://www.imdb.com/title/tt1853728/",
"media": "Blu-ray",
"_id": "51e2fc1b4c19500de6000004"
},
{
"type": "movie",
"title": "City of God",
"director": "Kátia Lund,Fernando Meirelles",
"year": 2002,
"url": "http://www.imdb.com/title/tt0317248/",
"media": "DVD",
"_id": "51e2fc1b4c19500de6000005"
}
]
}
满足以下条件时会发生这种情况:
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
如果有人遇到此问题,这可能与您的后端有关。在我的情况下,MongoDB使用_id而不是id作为标识符,Ember将id作为主键关联 - 跟踪您的记录。因此,您需要创建一个序列化此差异的适配器并适当地配置您的应用程序。
就我而言,我必须做以下事情:
MediaUi.Adapter = DS.RESTAdapter.extend({
serializer: DS.RESTSerializer.extend({
primaryKey: function(type){
return '_id';
}
})
});
MediaUi.Store = DS.Store.extend({
revision: 11,
adapter: 'MediaUi.Adapter'
});