diff --git a/src/domain_abstract/view/DomainViews.js b/src/domain_abstract/view/DomainViews.js index 79ecc1824..9531e648e 100644 --- a/src/domain_abstract/view/DomainViews.js +++ b/src/domain_abstract/view/DomainViews.js @@ -29,20 +29,24 @@ export default Backbone.View.extend({ * @private * */ add(model, fragment) { + const { config, reuseView } = this; var frag = fragment || null; var itemView = this.itemView; var typeField = model.get(this.itemType); + let view; + if (this.itemsView && this.itemsView[typeField]) { itemView = this.itemsView[typeField]; } - var view = new itemView( - { - model, - config: this.config - }, - this.config - ); - var rendered = view.render().el; + + if (model.view && reuseView) { + view = model.view; + } else { + view = new itemView({ model, config }, config); + view.render(); + } + + var rendered = view.el; if (frag) frag.appendChild(rendered); else this.$el.append(rendered); diff --git a/src/trait_manager/view/TraitSelectView.js b/src/trait_manager/view/TraitSelectView.js index 65c33268f..9032e33ac 100644 --- a/src/trait_manager/view/TraitSelectView.js +++ b/src/trait_manager/view/TraitSelectView.js @@ -51,7 +51,6 @@ export default TraitView.extend({ }); input += ''; - this.input = input; this.$input = $(input); let val = model.getTargetValue() || model.get('value'); !isUndefined(val) && this.$input.val(val); diff --git a/src/trait_manager/view/TraitView.js b/src/trait_manager/view/TraitView.js index e6c776707..e46725aac 100644 --- a/src/trait_manager/view/TraitView.js +++ b/src/trait_manager/view/TraitView.js @@ -162,7 +162,7 @@ export default Backbone.View.extend({ getInputElem() { const { input, $input } = this; - return input || ($input && $input.get(0)); + return input || ($input && $input.get(0)) || this.getElInput(); }, getModelValue() { diff --git a/src/trait_manager/view/TraitsView.js b/src/trait_manager/view/TraitsView.js index d6777998d..238708556 100644 --- a/src/trait_manager/view/TraitsView.js +++ b/src/trait_manager/view/TraitsView.js @@ -8,6 +8,7 @@ import TraitButtonView from './TraitButtonView'; export default DomainViews.extend({ itemView: TraitView, + reuseView: 1, itemsView: { text: TraitView,