Javascript Angularjs多重选择:无法读取未定义的属性“长度”

Javascript Angularjs多重选择:无法读取未定义的属性“长度”,javascript,angularjs,select,multiple-select,Javascript,Angularjs,Select,Multiple Select,我尝试了许多变化,但似乎没有任何效果 我得到以下错误: TypeError: Cannot read property 'length' of undefined at select.js:1560 at m.$broadcast (angular.js:18487) at Object.ctrl.select (select.js:673) at fn (eval at compile (angular.js:15358), <anonymous>:4:453) at e (ang

我尝试了许多变化,但似乎没有任何效果

我得到以下错误:

TypeError: Cannot read property 'length' of undefined
at select.js:1560
at m.$broadcast (angular.js:18487)
at Object.ctrl.select (select.js:673)
at fn (eval at compile (angular.js:15358), <anonymous>:4:453)
at e (angular.js:26994)
at b.$eval (angular.js:18161)
at b.$apply (angular.js:18261)
at HTMLDivElement.<anonymous> (angular.js:26999)
at HTMLDivElement.dispatch (jquery-3.2.1.min.js:3)
at HTMLDivElement.q.handle (jquery-3.2.1.min.js:3)
我可以在我的选择中看到要选择的选项,但是每次单击任何选项时,都会出现该错误。以下是显示success.data.d.results信息的下拉列表:


您应该初始化选择数组

$scope.addRecipient = {}; 
$scope.addRecipient.selection = [];

这就是我的代码现在的样子,它正在工作。谢谢@NTP的提示

<label for="addRecipient" class="bold">Additional Recipients:</label>
<ui-select multiple ng-model="addRecipient.selected" theme="bootstrap" title="Choose Recipients" class="multipleSelect">
   <ui-select-match placeholder="Select Additional Recipients...">{{$item.Title}}</ui-select-match>
   <ui-select-choices repeat="additional in addRecipients | filter:$select.search">
       {{additional.Title}}
</ui-select-choices>
下拉值:

$scope.addRecipients = success.data.d.results;
获取选定值:

//add Recipient
var addRecipients;
if ($scope.addRecipient.selected && $scope.addRecipient.selected !='undefined'){
     things = [];
     console.log($scope.addRecipient.selected);
     for (var key in $scope.addRecipient.selected) {
          if (key < $scope.addRecipient.selected.length) {
                 things.push($scope.addRecipient.selected[key].Email) ;
          }
      }
      addRecipients = things;
 }

当dropdownList中的数据为空时,我收到了错误。在dropdownList中初始化值后,它就可以正常工作了。
this.dropdownList=[]

这意味着您的数组是空的。这不是您的完整控制器,我的假设是成功。data.d.results是空的,因此您的$。每个都不是迭代的。请,您可以共享控制器、指令等。数组有值。我正在得到下拉列表的结果。我将在我的帖子中添加一个图片。现在一切正常。我很高兴我们发现了如何解决这类问题。谢谢!多亏了你的回答,我才弄明白。放置$scope.addRecipient={}时不起作用;但当我把它改成数组时,它就工作了。当我尝试时,你的解决方案不起作用,但正是它让我开始工作。非常感谢。我很高兴能帮上忙。我很感激!我快被它弄疯了。
$scope.addRecipient = {}; 
$scope.addRecipients = [];
$scope.addRecipients = success.data.d.results;
//add Recipient
var addRecipients;
if ($scope.addRecipient.selected && $scope.addRecipient.selected !='undefined'){
     things = [];
     console.log($scope.addRecipient.selected);
     for (var key in $scope.addRecipient.selected) {
          if (key < $scope.addRecipient.selected.length) {
                 things.push($scope.addRecipient.selected[key].Email) ;
          }
      }
      addRecipients = things;
 }