Angular + selected:选定的值

Sob*_*bis 5 angularjs jquery-chosen

我有一个关于在选择的小部件和AngularJS的组合中设置ng-model的问题(请参阅此视频:https://www.youtube.com/watch?v = 8ozyXwLzFYs )

我想要做的是将收件人设置为一些可以预先选择的值.这个例子的HTML和JS(来自视频)

<h1>Chosen</h1>
  <select data-placeholder="Choose a Recipient" multiple class="span4 chzn-select" chosen
      ng-model="recipients" ng-options="recipient.name for recipient in recipientsList">
  </select>

  <p ng-repeat="recipient in recipients"><strong>{{recipient.name}}</strong></p>
Run Code Online (Sandbox Code Playgroud)

和控制器中的JS

$scope.recipientsList = [];
    $scope.recipients = [];
    $scope.fetchRecipients = function() {
        $http.get($scope.url).then(function(result){

       $scope.recipientsList = [
    {"id":0, "name":"Recipient 0"},
    {"id":1, "name":"Recipient 1"},
    {"id":2, "name":"Recipient 2"},
    {"id":3, "name":"Recipient 3"},
    {"id":4, "name":"Recipient 4"},
    {"id":5, "name":"Recipient 5"},
    {"id":6, "name":"Recipient 6"},
    {"id":7, "name":"Recipient 7"},
    {"id":8, "name":"Recipient 8"},
    {"id":9, "name":"Recipient 9"},
    {"id":10, "name":"Recipient 10"}
];
     $scope.recipients = [{"id":0, "name":"Recipient 0"}, 
     {"id":1, "name":"Recipient 1"}];
     });
  }

    $scope.fetchRecipients();
Run Code Online (Sandbox Code Playgroud)

我尝试了一些组合但菜单中的值没有预先选择,尽管它们存储在收件人中,因为它们在菜单下方可见.你可以在这里看到这个例子:http: //jsfiddle.net/YKZSw/8/

谢谢你的激光.

马捷

man*_*nan 6

从AngularJS 1.1.5版开始,他们添加了一个track by子句.

这应该有所帮助.在您的情况下,您可以按ID添加曲目.


man*_*nan 4

AngularJS ngOptions 属性从作为数据源提供的数组中选择一个元素。在您的情况下,recipientsList 数组包含一定数量的对象。然而,由于对象不等式,您希望预选的元素不会出现在列表中,即使它们是相似的。含义recipientsList: {"id":0, "name":"Recipient 0"} 不等于recipients:{"id":0, "name":"Recipient 0"}(您可以在JS中尝试相同的操作)安慰)。Angular 在列表中找不到该元素,因此不会预选。

这个修改后的小提琴有效:http://jsfiddle.net/mananbharara/YKZSw/9/ 这种情况下唯一的区别在于您的收件人定义:

$scope.recipients = [$scope.recipientsList[0], $scope.recipientsList[1]];

在这种情况下,您只有一个列表,并且所选值只能来自该列表。

如果您必须维护两个列表,则可以使用此方法的替代方法是将选择值保留为原始类型。在这种情况下,原始平等将始终成立。