首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有ng重复的Select2上的默认值,其中数据来自API调用。

具有ng重复的Select2上的默认值,其中数据来自API调用。
EN

Stack Overflow用户
提问于 2014-04-11 15:54:58
回答 1查看 2.9K关注 0票数 0

我有一个角select2,如下所示:

代码语言:javascript
运行
复制
<select ui-select2 id="clientID" name="clientID" ng-model="newTicket.clientstate" ng-required="true">
    <option ng-repeat="item in clients track by item.id" value="{{item.clientID}}|{{item.stateID}}" >{{item.displayName}}</option> 
</select>

在我的控制器中,客户端设置如下(调用从$promise返回$resource的服务):

代码语言:javascript
运行
复制
TicketService.getClients().then(
    function(clients) {
        $scope.clients = clients;
    }
);

我还在控制器中设置了$scope.newTicket.clientstate的初始值。因为对$resource的调用是异步的,所以初始值的设置会在查询解析之前进行。

在API调用完成后,我试图让下拉列表填充一个初始值(“演示示例演示”)。我认为解决方案是三件事之一:在select上设置ng-init,在ng-重复上设置ng-selected,或者在.then()中执行在API返回查询后发生的事情。然而,我似乎无法获得正确的语法,我希望得到一些关于如何继续工作的建议。

我第一次解决问题(您可以在下面的注释中看到)是将所有内容转换为ng-选项,但是ui-select2 2库与ng-op(Tions)是无法兼容的,所以我正在寻找另一种可能性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-23 20:22:52

我刚刚碰到了同样的事情,一个同事把我引向了正确的方向。

原来你和我都想让解决方案复杂化。你所要做的就是:

代码语言:javascript
运行
复制
TicketService.getClients().then(
    function(clients) {
        $scope.clients = clients;
        // set the default value after the list comes back
        $scope.newTicket.clientstate = 'yourDefaultValue';  
    }
);

那你就该走了!

只需确保在此之前已经初始化了$scope.newTicket,否则就会收到一个错误,说明您无法访问未定义对象的属性。

我假设getClients()返回一个$promise对象?否则,您将需要执行以下任一操作:

代码语言:javascript
运行
复制
TicketService.getClients(function(clients){...}))

或者:

代码语言:javascript
运行
复制
TicketService.getClients().$promise.then(function(clients){...}))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23017272

复制
相关文章

相似问题

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