首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS: ui-select将数据绑定回select

AngularJS: ui-select将数据绑定回select
EN

Stack Overflow用户
提问于 2019-08-19 10:42:11
回答 1查看 378关注 0票数 1

我使用的是Angular js 1.3.4版本,并使用ui-select。

我将复杂的多级JSON对象数组绑定到这个ui-select,它工作得很好。因此,用户可以选择此select中的任何选项。当用户保存其他数据和此选择数据时,我将此信息保存在数据库中。所有这些都运行得很好。

我遇到的问题是如何将数据绑定到它。这可能不是ui-select的问题,因为我也不能将数据绑定回textbox。

下面是我从我的数据库中得到的json(经过一些修改):

代码语言:javascript
复制
{
   "input1":{
      "set1":{
         "source":"uat1",
         "value":"value1"
      },
      "set2":{
         "source":"uat",
         "value":"value2",
         "options":[
            {
               "name":"option1"
            },
            {
               "name":"option2"
            }
         ]
      }
   },
   "input2":{
      "set3":{
         "source":"uat1",
         "value":"value3"
      },
      "set4":{
         "source":"uat",
         "value":"value4",
         "options":[
            {
               "name":"option3"
            },
            {
               "name":"option4"
            }
         ]
      }
   }
}

下面是我尝试绑定回数据的指令:

代码语言:javascript
复制
 <div class="form-group" ng-repeat="(name, set) in sets">
    <label>{{name}}</label>
    <ui-select name="{{inputName + $index}}" ng-model="set.value" theme="bootstrap" ng-if="set.source == 'uat'">
        <ui-select-match placeholder="Set">{{set.value.name}}</ui-select-match>
        <ui-select-choices repeat="ds in set.options | filter: $select.search track by $index">
            <div ng-bind-html="ds.name | highlight: $select.search"></div>       
        </ui-select-choices>
    </ui-select>
    <input type="text" ng-if="set.source == 'uat1'" name="{{inputName + $index}}" ng-model="set.value" />
</div>

上面的结果是,对于我的ui-select,我可以看到选项,这意味着它与我传入的json数据正确绑定。问题是显示的值。我在ui-select中看不到任何选择,我的文本框也是空的。

由于上面每一个的模型都是ng-model = 'set.value‘,所以我在我的json中传递了这个参数。因此,我认为这会起作用,但它不是。

我相信我的Json遗漏了一些东西。谁能指出这里遗漏了什么,这样我就可以看到我的json中对应控件的value字段。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-19 17:58:36

在AngularJS ui-select中,ui-select-match指令用于显示选定的值以及应显示在文本框中的值。您在此处显示了错误的数据(set.value.name)。相反,您需要使用$select.selected.name显示所选值。

代码语言:javascript
复制
<ui-select-match placeholder="Set">{{$select.selected.name}}</ui-select-match>

您的ui-select-choices是对象,因此如果要从控制器设置默认值,您的值需要是存在于选项中的对象。因此,您可以通过将正确的值分配给您的ng-model set.value来设置ui-select的默认值。

代码语言:javascript
复制
"value": {
    "name":"option1"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57549920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档