18

我正在尝试实现一些非常简单的事情:

<ui-select multiple ng-model="company.stack" theme="bootstrap">
    <ui-select-match>{$$item.name$}</ui-select-match>
    <ui-select-choices repeat="technology in technologies | filter: $select.search">
        <div ng-bind-html="technology.name | highlight: $select.search"></div>
    </ui-select-choices>
</ui-select>

更改对象时,更改不会反映在模型 company.stack 中。我尝试将其更改为 $parent.company.stack,但它仍然无法正常工作。我错过了什么?我正在使用 AngularJS v1.3.0-beta.17。

4

9 回答 9

37

我遇到了类似的问题,angular 1.3.14and以及绑定到数组ui-select的多项选择指令。ui-select我无法将所选项目绑定到ng-model. 我通过包装selectedItems成一个对象让它工作:

$scope.myObj = { selectedItems : []};
...

<ui-select ng-model="myObj.selectedItems" ...>
</ui-select>

直接装selectedItems$scope我没用。

于 2015-04-27T23:43:48.680 回答
4

不确定你是否已经想通了,但我今天也在为这个“基本用例”而苦苦挣扎,因为我是 AngularJS 的新手。我正在使用 Angular 1.2.16 和 ui-select 0.8.3,虽然其他一切正常,但我无法让它更新范围变量employee.selected

就我而言,这个问题是由我对 AngularJS 的有限经验引起的。由于 ng-model 设置为对象(在我的情况下为员工)的属性,因此必须首先对其进行初始化。添加$scope.employee = {};到控制器中解决了这个问题。

于 2014-11-04T13:53:06.470 回答
2

这里有些人碰到了这个问题,但我会说清楚。出于某种原因,ui-select 要求 ng-model 是 $scope 内的嵌套值。所以 ng-model 必须指向范围内的 xy 而不是 x 或 y。

于 2019-07-11T06:51:00.717 回答
1

像@Rado 提到的那样初始化一个空对象为我修复了这个结构:

              <ui-select ng-model="reportFilterStatus.selected" title="Filtrar status">
                <ui-select-match placeholder="Filtra un estatus">
                    {{$select.selected}}
                </ui-select-match>
                <ui-select-choices repeat="status in filterStatusOptions | filter: $select.search">
                  <small ng-bind-html="status | highlight: $select.search"></small>
                  <span ng-bind-html="statuse | highlight: $select.search"></span>
                </ui-select-choices>
              </ui-select>
于 2016-07-19T20:03:59.960 回答
0

我通过将该模型的 ng-init放在下一个 div之后解决了这个问题。 例子:</ui-select>

<div class="col-md-6" ng-init="company-stack=null">
于 2015-03-23T13:09:09.737 回答
0

在 Angular 1.2.16 和 ui-select 0.8.3 上,我也在为一个非常基本的用例而苦苦挣扎。尽管在我看来,您的代码中存在拼写错误,但在ui-select-match 中

{{$select.selected.your_property_here}}通常,对于某种标准属性名称,该属性看起来像双花括号和单美元符号$select.selected。会不会是你的问题?

于 2014-10-23T22:36:30.467 回答
0

对我来说,它没有更新文本,我像这样使用它:

$timeout(function () {
    $('#ownerdetail').trigger("create");
    $('#ownerdetail').delay(0).animate({opacity: 1}, 100);
    $('#selectdcontact').selectmenu().selectmenu('refresh'); //This solves it
    $('#selectdcust').selectmenu().selectmenu('refresh'); //This solves it
  });
于 2017-06-30T16:35:59.297 回答
0

我对 angularjs 1.4 有类似的问题。在一个控制器中,ng-model 值得到更新。但是在其他页面上使用相同的方式它不起作用。以下是我的代码

在职的:

var ctrl = 这个;

ctrl.filters = {};

ctrl.filters.country = $rootScope.lUPro.RM_Country.split(",");

$(".country_select2").select2().val(ctrl.filters.country).trigger('change');

选择框是

$comint->CountrySelectBox(array("name"=>"country[]", "class"=>"country_select2 form-control", "id" => "req_country", "ng-model" => "ctrl. filters.country","multiple" =>"multiple")); 

不工作:

var prectrl = 这个;

 prectrl.preferenceformdata = {};

  变量 pf = {};

  pf.country = $rootScope.lUPro.RM_Country.split(",");

  prectrl.preferenceformdata = pf;
   $(".rm_country_select2").select2().val(prectrl.preferenceformdata.country).trigger('change');

选择框:

 $comint->CountrySelectBox(array("name"=>"country[]","class"=>"country_select2 form-control","id" => "req_country","ng-model"=>"prectrl. preferenceformdata.country","multiple" =>"multiple"));

所以解决我用来更新 ng-model 变量中的值的方法:

$(".country_select2").select2().val(prectrl.preferenceformdata.country)

.trigger('改变').on("改变",

功能(e){

var 值 = $(this).val();

$scope.$apply(function(){prectrl.preferenceformdata.country = values;});

});
于 2018-10-12T04:32:05.140 回答
-1

我有类似的问题,似乎 angular-ui-select#0.7 需要 angular#1.2.* 此时才能正常工作。

于 2014-09-19T19:46:57.577 回答