我想在路由或控制器中访问所有数据(例如Message
value
和author
属性),对它们执行某些操作,然后将它们存储到一个HTML localStorage。但是,到目前为止我看到的所有示例都使用each controller
来访问Handlebars上的每个模型数据。以下是我的伪实现。
App.MessagesRoute = Ember.Route.extend({
setupController: function(controller, model) {
messages = this.get('store').find('message')
//^This returns a PromiseArray but I can't seem to access the actual values.
//I also tried messages.forEach but it doesn't seem to work
//...
//...
//Below is what I'd like to do, to push the messages into the localStorage
//Therefore I'd like `messages` to be an array
for (var i=0; i<messages.length; i++)
localStorage.setItem('messages', JSON.stringify(messages[i]))
}
});
我知道我在这里错过了一些简单的东西。但我在文档中找不到它。
非常感谢任何帮助。
答案 0 :(得分:1)
你只需要等待promise数组完成,然后像这样迭代它:
App.MessagesRoute = Ember.Route.extend({
setupController: function(controller, model) {
messages = this.get('store').find('message')
messages.then(function() {
messages.forEach(function(message) {
// do what ya like
});
});
});
答案 1 :(得分:1)
Ember方式是首先在你的路线中设置模型,Ember只会在promise解决后调用setupController(即在获取模型后)。
App.MessagesRoute = Ember.Route.extend({
model: function() {
return this.get('store').find('message');
},
setupController: function(controller, model) {
model.forEach(function(msg) {
// save message to localStorage here
});
}
});