我每行都有一个表(一个组件)和一个删除按钮。单击删除按钮时,应删除特定行。
尝试以下代码:
MyComponent.js
import Ember from 'ember';
export default Ember.Component.extend({
actions:{
deleteCartRecord(cartDetails){
debugger;
this.sendAction('deleteRecord',cartDetails);
}
}
});
在MyComponent.hbs中
{{#each model.orderParts as |newCart|}}
<div class="card-wrapper col-lg-12 col-md-12">
<div class="col-lg-2 col-md-2">
<div class="order-id">{{newCart.partNumber}}</div>
{{#if (gte newCart.promiseQty newCart.quantity)}}
<div class="order-status delivered">{{env.APP.StockAvailable}}</div>
{{else}} {{#if (gt newCart.promiseQty '0'(and (lt newCart.promiseQty newCart.quantity)))}}
<div class="order-status intransit">{{env.APP.LowInStock}}</div>
{{else}} {{#if (eq newCart.promiseQty '0')}}
<div class="order-status outofstock">{{env.APP.OutofStock}}</div>
{{/if}} {{/if}} {{/if}}
</div>
<div class="col-lg-3 col-md-3">
<div class="item-header">Delivery Date</div>
<div class="item-data">{{newCart.deliveryDate}}</div>
</div>
<div class="col-lg-2 col-md-2">
<div class="item-header">Required Qty.</div>
<div class="item-data">
{{increse-required-quantity incresedQuantity=newCart.quantity}}
</div>
</div>
<div class="col-lg-2 col-md-2">
<div class="item-header">Unit Price</div>
<div class="item-data">{{newCart.unitPrice}}</div>
</div>
<div class="col-lg-2 col-md-2">
<div class="item-header">Total Price</div>
<div class="item-data">{{newCart.partTotalPrice}}</div>
</div>
<div class="col-lg-1 col-md-1 button-colum"><button type="button" class="btn btn-danger" {{action "deleteCartRecord" newCart}}>Delete</button> </div>
</div>
{{/each}}
我的控制器
import Ember from 'ember';
export default Ember.Controller.extend({
actions:{
deleteRecord(data){
debugger;
let confirmation = confirm("are you sure to delete");
if(confirmation)
{
debugger;
data.deleteRecord();
data.save();
}
}
}
});
调用组件的模板文件
<hr>
</div>
<div class="col-lg-12 col-md-12">
<div class="checkout-summery-wrapper">
<div class="total-label">Total</div>
<div class="total">{{model.totalPrice}}</div>
<!--<div class="tax-text">( Inclusive of all taxes )</div>-->
<div class="place-order-button"><button type="button" class="btn siemens-btn">Place Order</button></div>
</div>
</div>
<div class="col-lg-12 col-md-12">
{{#if model.orderParts.isGeneric}}
<div class="panel panel-default card-list-panel">
<div class="panel-heading-cart col-lg-12 col-md-12">
<div class="col-lg-11 col-md-11 heading">Generic Parts</div>
<div class="col-lg-1 col-md-1"><a href='#' class="delete-all">Delete All</a></div>
</div>
<div class="panel-body">
{{cart-record model = model}}
</div>
</div>
{{/if}}
{{#unless model.orderParts.isGeneric}}
<div class="panel panel-default card-list-panel">
<div class="panel-heading-cart col-lg-12 col-md-12">
<div class="col-lg-11 col-md-11 heading">Hot Gas Path</div>
<div class="col-lg-1 col-md-1"><a href='#' class="delete-all">Delete All</a></div>
</div>
<div class="panel-body">
{{cart-record model = model deleteRecord=(action 'deleteRecord')}}
</div>
</div>
{{/unless}}
</div>
MyRoute
import Ember from 'ember';
export default Ember.Route.extend({
model: function()
{
return this.get('store').queryRecord('cart',{userId:1})
}
});
My Serializer
import DS from 'ember-data';
export default DS.JSONSerializer.extend(DS.EmbeddedRecordsMixin, {
primaryKey: 'totalPrice',
attrs: {
orderParts:
{
serialize: 'records',
deserialize: 'records'
}
}
});
我有以下问题:
提前谢谢。
答案 0 :(得分:1)
在MyComponent.hbs中,newCart作为参数传递,这将删除我想要的所有记录或特定记录吗?
它将仅删除特定记录。如果您要删除所有记录,则可以尝试unloadAll('model-name')
未从组件中调用MyController,为什么会这样?
您需要发送操作upcon调用组件{{my-component deleteRecord=(action 'deleteRecords') }}
。实际上真正的问题是,你正在调用deleteRecord
,但在控制器中你得到了deleteRecords
。
这是在ember中删除记录的正确方法吗?
如果您想立即删除,则可以使用destroyRecord
这将立即删除并保存记录
答案 1 :(得分:0)
嗯,你的例子充满了错误......
- 在MyComponent.hbs中,将newCart作为参数传递,删除我要删除的所有记录或特定记录吗?
醇>
不。
首先,您需要了解路线中store.query
的结果会返回 DS.ManyArray (类似于数组的对象,在您的示例中为 model )包含一组 DS.Model 实例(示例中应为 newCart ,但您必须先更改为{{#each model as |newCart|}}
)。只有 DS.Model 的方法 .save()和 .deleteRecord()。
您在按钮上设置的操作是{{action "deleteCartRecord" newCart.partNumber}}
,因此您实际上将名为partNumber的属性传递给deleteRecord并运行deleteRecord并保存此属性。除非 partNumber 是指向另一个 DS.Model 的 DS.belongsTo ,否则它根本无效。
但你想要的是删除newCart,对吧?
- 关于为什么不从组件中调用MyController的任何想法?
醇>
你的调用是对的。但是,由于你的组件充满了bug,它必须在其他地方抛出异常而app已经无法运行。
- 这是在ember中删除记录的正确方法吗?
醇>
我想我在第一个问题上回答得足够多了。