Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to replace content element in an Array Controller

Currently working on part of the app that requires cloning an element from the content, then modifying cloned element and saving back to model. I am having a problem when saving the cloned element and having to replace the old item with cloned one. What I am currently doing is changing all the properties of the old item like so (it works):

Blocks.replace = function(item1, item2) {
  for(var k in item2) {
    Ember.set(item1, k, item2[k]);
  }
};

var selectedEmployment = this.get("controllers.employmentDataEntry").get("selectedEmployment");
var modelItem = content.findBy("@id", selectedEmployment["@id"]);
Blocks.replace(modelItem, selectedEmployment);

I'm trying to use the ArrayController replaceContent method, but I get an error saying "Invalid array length" when trying to run the following code:

var employmentIndex = content.indexOf(modelItem);
this.replaceContent(employmentIndex, 0, selectedEmployment);

Am I doing this incorrectly? Is there a better way of replacing an item? Note: I am using JSON as a model. The ArrayController that is used when calling replaceContent contains an array of length 2.

like image 717
JJJ Avatar asked Feb 13 '26 21:02

JJJ


1 Answers

Fix: Need to send in an array to replaceContent method. So change selectedEmployment to [SelectedEmployment]. Also, change 0 to 1, otherwise, content will end up having both element and cloned element.

this.replaceContent(employmentIndex, 1, [selectedEmployment]);
like image 182
JJJ Avatar answered Feb 16 '26 12:02

JJJ



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!