What am I doing wrong?
I have a table full of Proposal records. Each Proposal has a child record that we call a Commit. I want to let a user select some or all Proposals, enter a couple dates in a popup, and update those dates on the child Commit record of each selected Proposal.
The popup has a field editor with two date fields from a Ui-only model, and a title component with a button that runs the following snippet.
var table = skuid.$('#vwProposalTableFull'), list, datesModel = skuid.$M('vwCommitUpdates_UiOnly'); // the ui-only model that accepts new dates from the user datesModel.save(); var datesRow = datesModel.getFirstRow(), sentDate = datesModel.getFieldValue(datesRow,'Award_Letter_Sent_Ui'), signedDate = datesModel.getFieldValue(datesRow,'Award_Letter_Signed_Ui'); // STEP 1: Load array with IDs of selected Proposals from the table. Funded only. // This step works correctly. if (table.length) { list = table.data('object').list; } var idsArray = skuid.$.map(list.getSelectedItems(), function(item) { if (item.row.Status__c == "Funded") { return item.row.Id; } }); // STEP 2: Set condition to get only the Commits that belong to selected Proposals // This step works correctly var model = skuid.$M('vwCommitUpdates'), condition = model.getConditionByName('Proposal_Details__c'); model.setCondition(condition, idsArray, false); // STEP 3: Query model. When query completes, callback loops through each row to update date fields. // This step is not working correctly. model.updateData( function() { try { $.each(model.data, function(i, row) { //if(row.Award_letter_sent__c ... I will set conditions here, when I get it working ) { model.updateRow(row, 'Award_letter_sent__c', sentDate); model.updateRow(row, 'Award_Letter_Signed__c', signedDate); //} }); } catch(err) { console.log('error! ... ' + err); // Result is always: "TypeError: Cannot read property 'each' of undefined" } finally { console.log('code in finally'); } model.save(); }); // STEP 4: housekeeping (close popup etc) skuid.$('.ui-dialog-content').dialog('close');``` Steps 1, 2, and 4 work correctly. I cannot get Step 3 to work. The result of my try/catch is always err: "TypeError: Cannot read property 'each' of undefined". When I step through this code in the console, or use console.log to show the state of vars in each block, I see rows in model. This syntax seems to obey the documentation here, https://docs.skuid.com/latest/en/skuid/api/skuid_model_model.html#skuid.model.Model.updateRows I've tried the following variants in my try{} block, the result is the same TypeError: Cannot read property 'each' of undefined. Variant 1:var rowsToUpdate = {}; $.each( model.getRows(), function() { rowsToUpdate[this.Id] = { Award_letter_sent__c: sentDate, Award_Letter_Signed__c: signedDate }; }); ```model.updateRows( rowsToUpdate );``` Variant 2: ``` var rows []; ``` ``` rows = model.getRows(); ```$.each(rows, function(row) { model.updateRow(row, { Award_letter_sent__c: sentDate, Award_Letter_Signed__c: signedDate }); });```