Ember'de bir dizi üzerinde yineleme yapmaya çalışıyorum ve removeObject()
ile dizideki nesneleri kaldırın. Aşağıdaki örnek, diziden yalnızca bazı nesneleri kaldırır. Ben bunları kaldırmak sonra tüm nesneler üzerinde yineleme ve beklediğiniz:Ember.js removeObject inEach in all Tümünü kaldır Nesneler
App = Ember.Application.create();
App.ITEM_FIXUTRES = [
'Item 1',
'Item 2'
];
App.ITEM_FIXTURES = App.ITEM_FIXUTRES.map(function (item) {
return Ember.Object.create({title: item});
});
App.IndexRoute = Ember.Route.extend({
model: function() {
return App.ITEM_FIXTURES;
},
actions: {
add: function(title) {
var items = this.modelFor('index');
items.addObject(Ember.Object.create({title: title}));
this.controller.set('title', '');
},
removeAll: function() {
var items = this.modelFor('index');
items.forEach(function (item) {
// I actually only want to remove certain objects with specific
// properties but this illustrates the issue.
items.removeObject(item);
});
}
}
});
şablon oldukça basittir:
İşte<script type="text/x-handlebars" id="index">
<h4>Collection List</h4>
<button {{action 'removeAll'}}>Remove All</button>
<ul>
{{#each}}
<li>{{title}}</li>
{{/each}}
<li>{{input type='text' value=title action='add'}}</li>
</ul>
</script>
bir JSBin geçerli: http://jsbin.com/kelinime/4/edit
, RemoveObject öğeleri mutasyona edilir. Her yineleme, nesneyi değiştiriyor ancak yine de orijinal nesnenin üzerinden yineleme yapmaya çalışıyor. Belki bunun yerine durumu ortadan kaldırır ve yeni bir liste oluşturur - eğer (kondisyonu kaldır) yerine '' use (— cond) newList.push (item); öğeler = newList; // ya benzer bir şey ' – Snnappie