Templates Ember model.get()未正确返回值或绑定到模板
我有一个路由,它通过RSVP哈希中的Templates Ember model.get()未正确返回值或绑定到模板,templates,ember.js,Templates,Ember.js,我有一个路由,它通过RSVP哈希中的.store.query()方法填充模型属性: model(params, transition) { return Ember.RSVP.hash({ myData: this.store.query('table-datum', parameters) }); } 这将返回一个承诺,并似乎将数据输入到我的存储中。根据Ember inspector,我看到了正确的行数,并且它们都具有填充了数据的属性 然后,我的主视图模板中
.store.query()
方法填充模型属性:
model(params, transition) {
return Ember.RSVP.hash({
myData: this.store.query('table-datum', parameters)
});
}
这将返回一个承诺,并似乎将数据输入到我的存储中。根据Ember inspector,我看到了正确的行数,并且它们都具有填充了数据的属性
然后,我的主视图模板中有一个简单的组件模板,每个块都有一个来显示输出:
{{#each data as |result|}}
<tr>
<td>{{result.prop1}}</td>
<td>{{result.prop2}}</td>
</tr>
{{/each}}
我很确定数据在某个地方,只是我的模板似乎出于某种原因没有访问属性
关于在哪里找这个有什么想法吗
编辑:记录结果
对象看起来几乎正确,但不完全正确:
扩展内部模型会显示一些数据,但也会显示“空对象”,这在我看来似乎有点错误
编辑:如果有帮助的话,我有一个控制器函数,它获取model.myData
并对其进行操作,从而得到我期望的结果:
getMax() {
let max = _.max(this.get('model.myData'),'aField').aField;
console.log(max); // logs 41 as I expect
return max;
}
这是您在路线模型中所做的吗
model() {
return Ember.RSVP.hash({
myData: this.store.query('table-datum', parameters)
}).then(function(results) {
return results;
}).catch(function(error) {
throw error;
});
},
setupController(controller, model) {
this._super(...arguments);
Ember.set(controller, 'myData', model.myData);
}
然后在模板中,我将访问我的数据。如果您记录结果,在控制台中会得到什么<代码>{log result}}
我得到了一个似乎是一个包含值的Ember类,但它也奇怪地在一些地方说“空对象”,将用图像更新问题myData:this.store.query('table-datum',parameters)
无效,这是您的真实代码吗?非常不鼓励在属性/计算属性中返回承诺,是否有可能将查询移动到路由?这是我的真实代码,其中参数是我希望传递到终点的查询字符串params的对象。它生成一个有效的HTTP请求,该请求返回有效的JSON。我是99.99%,这不是问题。你的代码看起来很好。。。我能看到的唯一原因是,可能您没有正确访问属性。如何使用result.LUF
或result.LUF
访问组件中的属性?示例中的then
和catch
案例是冗余的,他不必访问模板中的model.myData
吗?@Vis我正在做你写的没有.then/catch的事情,因为我理解它们正如@DanMcClain所说的那样,要多余。此外,我还没有显式地将controller属性设置为model.myData,因为我的所有其他散列属性都可以正常工作并且可以访问(我使用findAll()
这些属性)@torazaburo我正在将model.myData
作为名为data
的属性传递给子组件。这适用于其他几个(甚至这个)组件中模型的所有其他哈希属性。myData就是模型。
getMax() {
let max = _.max(this.get('model.myData'),'aField').aField;
console.log(max); // logs 41 as I expect
return max;
}
model() {
return Ember.RSVP.hash({
myData: this.store.query('table-datum', parameters)
}).then(function(results) {
return results;
}).catch(function(error) {
throw error;
});
},
setupController(controller, model) {
this._super(...arguments);
Ember.set(controller, 'myData', model.myData);
}