在 Emberjs 中加载下拉列表变化的数据
Loading data on dropdown change in Emberjs
我有一个下拉列表组件(列表 "periods"),当此选择发生变化时,应使用表单填充其下方的表单,以便编辑该期间的数据。
主模板渲染组件很好(我希望代码能自我解释?)
{{period-component items=model.periods}}
组件呈现一个下拉菜单,其中填充了句点
<select style="width:100%" onchange={{action "periodChange" value="target"}}>
<option>Select a period</option>
{{#each items as |period|}}
<option value={{period.id}}>{{period.name}}</option>
{{/each}}
</select>
这是我开始放松它的地方(Ember 很新)因为模型有句点 属性,而句点有 "balance" 属性。因此,显示的表单将类似于 model.periods[1].balance(如果您根据我习惯的 c# 代码来思考)
无论如何,我现在的问题是这个承诺的事情,似乎我的 api 在以下代码中的警报之后被击中,这应该只在数据返回时发生(警报是 [object,object] 无论如何...uuurgh)
actions: {
periodChange(period) {
var store = this.get('store');
store.findRecord('dealperiod', period.value).then(function(data) {
var assetBalance = data.assetBalance;
alert(assetBalance);
this.set('assetBalance', assetBalance);
});
如果有人能给我指出正确的方向,而不是指望被灌食。
猜猜我的问题归结为:仅在返回数据后才做某事的正确方法是什么(承诺?)其次,如果输入是针对 child 属性 模型(在这种情况下,我有一个 "deal" 模型,它有一个 "periods" 的集合,我想在每个周期被选中时编辑数据)
我不确定,但你可以试试 ember 获取资产余额的方法吗?
var assetBalance = data.get('assetBalance');
我有一个下拉列表组件(列表 "periods"),当此选择发生变化时,应使用表单填充其下方的表单,以便编辑该期间的数据。
主模板渲染组件很好(我希望代码能自我解释?)
{{period-component items=model.periods}}
组件呈现一个下拉菜单,其中填充了句点
<select style="width:100%" onchange={{action "periodChange" value="target"}}>
<option>Select a period</option>
{{#each items as |period|}}
<option value={{period.id}}>{{period.name}}</option>
{{/each}}
</select>
这是我开始放松它的地方(Ember 很新)因为模型有句点 属性,而句点有 "balance" 属性。因此,显示的表单将类似于 model.periods[1].balance(如果您根据我习惯的 c# 代码来思考)
无论如何,我现在的问题是这个承诺的事情,似乎我的 api 在以下代码中的警报之后被击中,这应该只在数据返回时发生(警报是 [object,object] 无论如何...uuurgh)
actions: {
periodChange(period) {
var store = this.get('store');
store.findRecord('dealperiod', period.value).then(function(data) {
var assetBalance = data.assetBalance;
alert(assetBalance);
this.set('assetBalance', assetBalance);
});
如果有人能给我指出正确的方向,而不是指望被灌食。
猜猜我的问题归结为:仅在返回数据后才做某事的正确方法是什么(承诺?)其次,如果输入是针对 child 属性 模型(在这种情况下,我有一个 "deal" 模型,它有一个 "periods" 的集合,我想在每个周期被选中时编辑数据)
我不确定,但你可以试试 ember 获取资产余额的方法吗?
var assetBalance = data.get('assetBalance');