Skip to content
This repository was archived by the owner on Oct 2, 2019. It is now read-only.

$select.selected gets wrong values for uiSelectMultiple #1049

Closed
FarSeeing opened this issue Jun 30, 2015 · 4 comments
Closed

$select.selected gets wrong values for uiSelectMultiple #1049

FarSeeing opened this issue Jun 30, 2015 · 4 comments

Comments

@FarSeeing
Copy link

uiSelectMultipleDirective.js#L143

        if(!angular.isArray(ngModel.$viewValue)){
          // Have tolerance for null or undefined values
          if(angular.isUndefined(ngModel.$viewValue) || ngModel.$viewValue === null){
            $select.selected = [];
          } else {
            throw uiSelectMinErr('multiarr', "Expected model value to be array but got '{0}'", ngModel.$viewValue);
          }
        }
        $select.selected = ngModel.$viewValue;

The check for ngModel.$viewValue being null or undefined makes no sense now as $select.selected will still get the original value of ngModel.$viewValue.

@awerlang
Copy link
Contributor

awerlang commented Aug 7, 2015

+1

@nesinervink
Copy link

nesinervink commented May 26, 2016

+1

This code needs testing, but seems like it solves all the issues with $select.selected being undefined, because on $render $select.selected is assigned model's $viewValue before $watch in uiSelectSingleDirective.js#L42 sets the $viewValue to empty array in case $select.selected was undefined.

nesinervink/ui-select@0c1764a

ngModel.$render = function() {
  // Make sure that model value is array
  if(!angular.isArray(ngModel.$viewValue)){
    // Have tolerance for null or undefined values
    if(angular.isUndefined(ngModel.$viewValue) || ngModel.$viewValue === null){
      $select.selected = [];
    } else {
      throw uiSelectMinErr('multiarr', "Expected model value to be array but got '{0}'", ngModel.$viewValue);
    }
  } else {
    $select.selected = ngModel.$viewValue;
  }

  $selectMultiple.refreshComponent();
  scope.$evalAsync(); //To force $digest
};

@nesinervink
Copy link

Problem persists in v0.18.0 and this push still solves it.

@user378230
Copy link
Contributor

This should be resolved by #1709, please update this issue if it does not (when the next version is released).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants