首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ng-options选择输入

使用ng-options选择输入
EN

Stack Overflow用户
提问于 2016-02-07 01:05:03
回答 3查看 1.4K关注 0票数 0

我使用ng-options来选择input.But,只是不填充下拉列表。我使用materialize css作为css框架。

以下是我的代码

代码语言:javascript
复制
<div class="col s6" >
    <select ng-options="bucket.id as bucket.name for bucket in buckets track by bucket.id" ng-model="new_transaction.bucket"></select>
</div>

Js代码

代码语言:javascript
复制
$scope.new_transaction = {
    "bucket":""
}

$scope.buckets = [
    {
        id:1,
        name:"bucket-1"
    },
    {
        id:2,
        name:"bucket-2"
    }
]

$(document).ready(function() {
    // the "href" attribute of .modal-trigger must specify the modal ID that wants to be triggered
    $('select').material_select();
});

注意:控制台中没有错误。dropdown元素上的inspect元素向我展示了

代码语言:javascript
复制
<div class="select-wrapper">
   <span class="caret">▼</span>
    <input type="text" class="select-dropdown" readonly="true" data-activates="select-options-b1cded87-bee7-c9cd-5564-c613f7439e7a" value="">
    <ul id="select-options-b1cded87-bee7-c9cd-5564-c613f7439e7a" class="dropdown-content select-dropdown" style="width: 294px; position: absolute; top: 0px; left: 0px; opacity: 1; display: none;">
    </ul>
    <select ng-options="bucket.id as bucket.name for bucket in buckets track by bucket.id" ng-model="new_transaction.bucket_id" class="initialized ng-pristine ng-untouched ng-valid"><option value="?" selected="selected"></option>
 <option label="Bucket-1" value="1">Bucket-1</option>
 <option label="Bucket-2" value="2">Bucket-2</option></select>

EN

回答 3

Stack Overflow用户

发布于 2016-02-07 01:13:58

你可以申请

代码语言:javascript
复制
$('select').material_select();

只有当你准备好了,ngOptions指令才会完成。最简单和最常用的解决方案是将插件初始化放在$timeout中:

代码语言:javascript
复制
$timeout(function(){
   $('select').material_select();
})
票数 0
EN

Stack Overflow用户

发布于 2016-02-07 01:24:14

您已经包含了angular,但是您还没有正确地设置它来实际使用它。您需要创建一个模块、一个控制器和一个指令来完成您想要完成的任务。

代码语言:javascript
复制
angular.module('app', []);

angular.module('app').controller('AppController', ['$scope', function($scope) {
   $scope.new_transaction = {
    bucket:""
   };

   $scope.buckets = [
   {
      id:1,
      name:"bucket-1"
   },
   {
      id:2,
      name:"bucket-2"
   }];


}]);

angular.module('app').directive('materialSelect', function() {
   return {
      restrict: 'A',
      link: function(scope, elem) {
         $(elem).material_select();
      }
   };
});

在body标签上,包括:

代码语言:javascript
复制
<body ng-app="app">

在主要内容的容器上,包括:

代码语言:javascript
复制
<div ng-controller="AppController">
   <!-- your other content including the select -->
</div>

然后使用materialSelect指令作为属性,如下所示:

代码语言:javascript
复制
<select material-select ng-options="bucket.id as bucket.name for bucket in buckets track by bucket.id" ng-model="new_transaction.bucket"></select>
票数 0
EN

Stack Overflow用户

发布于 2016-09-20 15:17:36

如果您之前已经对存储桶进行了初始化,那么和异步请求ng-options将使其为空,因为ng-options在第一次修改时会获取存储桶。例如:

代码语言:javascript
复制
$scope.buckets = [];

$http.get('/get buckets/').then(function (result) {
  $scope.buckets = result.data;
});

因此,删除$scope.buckets = [];会使ng-options等待,直到回调后将其装入存储桶。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35243809

复制
相关文章

相似问题

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