UX Guy
UX Guy

Reputation: 257

Getting the array value of angular ng-repeat

I have a list that looks like this:

Store 1
  Section A
  Section B
  and so on...
Store 2
  Section A
  and so on...

So I open a modal window to create a new store. I return the store when I close the window, and so far that's working great!

<div ng-repeat="store in global.user.company2.store">

I need to push the callback store to $scope.global.user.company2.store[?]

modalInstance.result.then(function (newStore) {
    // How do I get the IndexOf value of store?
    // This is one of the stores in the ng-repeat 
    $scope.global.user.company2.store[???].section.push(newStore)
}, function () {
    $log.info('Modal dismissed at: ' + new Date());
});

The way I'm sending a selected store into the modal is with resolve

    $scope.createSection = function (size) {

        var modalInstance = $modal.open({
            templateUrl: 'createSection.html',
            controller: 'SectionModal',
            size: size,
            resolve: {
                items: function () {
                    // $scope.radio.model === store
                    // $scope.radio.model2 === section
                    return $scope.radio;
                }
            }
        });

UPDATE: Here's a basic plunker http://plnkr.co/edit/UGN4niAO9nQETqhg8lxn The radio model buttons aren't working. If you change resolve items to $scope.radio.model, the modal breaks. So I left it as is. I think maybe it has to do with the btn-radio being part of angular-ui-bootstrap?

Upvotes: 1

Views: 174

Answers (1)

rageandqq
rageandqq

Reputation: 2281

When resolving your modal, box your returned object with the array index of the object.
For example:

 $modalInstance.close({ radio: $scope.radio, index: $scope.items.indexOf($scope.radio) } );

Then, when resolving your modal's promise, simply unbox your object:

modalInstance.result.then(function (selectedItem) {
      $scope.selected = selectedItem.radio;
      $scope.selectedIndex = selectedItem.index;
}, function () {});

See the Angular-Bootstrap docs for more details.

Upvotes: 1

Related Questions