Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS ui select,如何初始化multiselect值?_Javascript_Angularjs_Select_Angular Ui - Fatal编程技术网

Javascript AngularJS ui select,如何初始化multiselect值?

Javascript AngularJS ui select,如何初始化multiselect值?,javascript,angularjs,select,angular-ui,Javascript,Angularjs,Select,Angular Ui,解决方案: 我自己解决了这个问题:在应用并完成我的ui选择自定义构建之后,整个问题不再是问题了。我希望这会很快进入官方的大师级分支 问题 如何使用多个值初始化select?我正在尝试此操作,但它不会在选择中显示所选项目 首先,我认为它与我通过HTTP get异步获取的数据有关,但甚至与我为证明这个问题对我有效而制作的“静态”plunker示例无关 我认为我的问题是数据来自两个不同的来源,因此两个数组之间的索引和引用不匹配。类别列表与服务一起获取,所选类别来自另一个服务,该服务与附加到它们的数据集

解决方案:

我自己解决了这个问题:在应用并完成我的ui选择自定义构建之后,整个问题不再是问题了。我希望这会很快进入官方的大师级分支

问题

如何使用多个值初始化select?我正在尝试此操作,但它不会在选择中显示所选项目

首先,我认为它与我通过HTTP get异步获取的数据有关,但甚至与我为证明这个问题对我有效而制作的“静态”plunker示例无关

我认为我的问题是数据来自两个不同的来源,因此两个数组之间的索引和引用不匹配。类别列表与服务一起获取,所选类别来自另一个服务,该服务与附加到它们的数据集一起返回。在另一个select中,仅仅从庞大的列表中选择所选的用户就加载所有45k用户是非常不切实际的

那么,如何使现有的选择数据显示在选择ui中呢

HTML

“初始化”
select
ui select
或任何其他
ng model
类型输入的方法是,将进入
ng model
的ViewModel变量设置为所选值或对象(本例中为)所需的任何值或对象

在您的示例中,您试图这样做,但由于您正在选择一个对象,因此您的VM应该引用同一个对象(通过引用)。您的错误是创建了具有相同内容的不同对象

因此,
$scope.categories.selected
应该是实际对象的数组(因为它是多个):


简言之,你是在告诉我将索引整数传递给该数组,而不是整个对象?嗯,这给我带来了一些其他问题。除了通过数组索引,还有什么方法可以跟踪选择?没有,我告诉你通过引用传递对象;i、 e.对象本身。选择将是实际对象,而不是数组索引。我的问题是,数据来自两个不同的来源,因此索引和您建议的引用不匹配。类别列表与服务一起获取,所选类别来自另一个服务,该服务与附加到它们的数据集一起返回。在另一个选择中,加载所有45k用户只是从庞大的列表中选择所选用户是非常不切实际的。这很好地描述了我的问题,根据这一点,仍然不起作用。我不理解你的问题<代码>ng型号始终指实际选择-无论是由控制器设置还是由
用户界面选择
设置。如果您选择的记录来自不同的地方,则在从服务器收到的数据集中查找它们引用的实际对象,并将
selected
数组设置为这些对象。如果不想选择对象,请改为选择
id
s
<body ng-controller="MainCtrl">
        <label>Assigned Categories</label>
        <ui-select
            multiple
            ng-model="categories.selected"
            on-select="selectCategory($item, $model)"
            on-remove="deselectCategory($item, $model)">
            <ui-select-match placeholder="Select Category...">{{$item.name}}</ui-select-match>
            <ui-select-choices
                repeat="category in categories.categories track by category.id">
            {{category.name}}
            </ui-select-choices>
        </ui-select>
        <pre>{{categories | json}}</pre>
</body>
var app = angular.module('plunker', [
  'ui.select'
]);

app.controller('MainCtrl', function($scope) {
        $scope.categories = {
            selected: [
        {
          "id": "1",
          "name": "Foo"
        }
            ],
            categories: [
        {
          "id": "1",
          "name": "Foo 1"
        },
        {
          "id": "2",
          "name": "Bar 2"
        },
        {
          "id": "3",
          "name": "FooBar 3"
        }
            ]
        };
});
$scope.categories = {
   categories: [
        {
          "id": "1",
          "name": "Foo 1"
        },
        {
          "id": "2",
          "name": "Bar 2"
        },
        {
          "id": "3",
          "name": "FooBar 3"
        }
    ]
};

$scope.categories.selected = [$scope.categories.categories[0]];