framework/ember/app/utils/named-container-view.js
2014-12-20 16:56:46 +10:30

66 lines
1.5 KiB
JavaScript

import Ember from 'ember';
export default Ember.ArrayProxy.extend({
content: null,
namedViews: null,
init: function() {
this.set('content', Ember.A());
this.set('namedViews', Ember.Object.create());
this._super();
},
// Add an item to the container.
addItem: function(name, viewClass, index) {
// view = this.createChildView(view);
if (typeof index == 'undefined') {
index = this.get('length');
}
this.replace(index, 0, [viewClass]);
this.get('namedViews').set(name, viewClass);
},
// Remove an item from the container.
removeItem: function(name) {
this.removeObject(this.get('namedViews').get(name));
this.get('namedViews').set(name, null);
},
// Replace an item in the container with another one.
replaceItem: function(name, viewClass) {
// view = this.createChildView(view);
var oldView = this.get('namedViews').get(name);
var index = this.indexOf(oldView);
this.replace(index, 1, [viewClass])
this.get('namedViews').set(name, viewClass);
},
// Move an item in the container to a new position.
moveItem: function(name, index) {
var view = this.get('namedViews').get(name);
this.removeItem(name);
this.addItem(name, view, index);
},
firstItem: function() {
return this.objectAt(0);
}.property(),
secondItem: function() {
return this.objectAt(1);
}.property(),
remainingItems: function() {
return this.slice(2);
}.property(),
getItem: function(name) {
return this.get('namedViews').get(name);
}
});