无法使用ember-model的deleteRecord()

时间:2013-09-08 14:18:20

标签: ember.js handlebars.js ember-model

这里,我试图在点击行删除选项(交叉标志)时从表中删除行。 但它抛出错误Uncaught TypeError: Object 2 has no method 'call'

在这里,我正在显示模型中的数据,如下所示:

<tbody>                           
    {{#each item in model}}
        {{#each item in item.cart_items}}
        <tr>
            <td>{{item.id}}</td>
            <td>{{item.name}}</td>
            <td>{{item.qty}}</td>
            <td>{{item.price}}</td>
            <td>{{item.subtotal}}</td>
            <td><button type="button" {{action 'deleteproduct' item.id}} class="close" aria-hidden="true" >&times;</button></td>
        </tr>   
        {{/each}}
    {{/each}}                                                             
</tbody>

上述夹具的结构如下:

Astcart.Application.adapter = Ember.FixtureAdapter.create();

Astcart.Application.FIXTURES = [
    {
        "logged_in": {
            "logged": true,
            "username": "sachin",
            "account_id": "4214"
        },
        "cart_items": [
            {
                "id": "1",
                "name": "Samsung Galaxy Tab 2",
                "qty": "1",
                "price": "1245.12",
                "subtotal": "1245.12"
            },
            {
                "id": "2",
                "name": "Samsung Galaxy Tab 2",
                "qty": "2",
                "price": "1500.00",
                "subtotal": "3000.00"
            },
            {
                "id": "3",
                "name": "Samsung Galaxy Tab 2",
                "qty": "5",
                "price": "100.00",
                "subtotal": "500.00"
            }
        ]           
    }
];

在这里,我试图从表中删除行:

deleteproduct: function(productID){
    if (window.confirm("Are you sure you want to delete this record?")) {           
        var result = this.get('model').map(function(application) {
            console.log(JSON.stringify(application.get('cart_items')));
            console.log(JSON.stringify(application.get('cart_items').find(productID)));
            application.get('cart_items').deleteRecord(application.get('cart_items').find(productID));
            application.get('cart_items').commit();
        });
    }
}

I have posted my complete code here. 任何人都可以帮我制作这个小提琴吗?

更新

I have updated my code here deleteRecord在上面的小提琴中运行正常,但是如何从数组中删除记录,该数组是fixture的一部分(节点之一)。

cart_items is an array and node of fixture as explained above.

I have posted my complete code here. 任何人都可以帮我制作这个小提琴吗?

1 个答案:

答案 0 :(得分:2)

您可以通过操作发送item

<td><button type="button" {{action 'deleteproduct' item}} class="close" aria-hidden="true" >&times;</button></td>

然后将其删除

Astcart.IndexController = Ember.ArrayController.extend({
    deleteproduct: function(product){
        if (window.confirm("Are you sure you want to delete this record?")) {               
            product.deleteRecord();
        }
    }
}); 

不要忘记在模型上运行夹具适配器:

Astcart.Cart_items.adapter = Ember.FixtureAdapter.create();