javascript - 为什么这个 Angular 选择包装器指令不起作用?

标签 javascript angularjs angularjs-directive html-select

我正在尝试创建一个指令,用硬编码列表包裹 select

var app = angular.module('dirApp',[]);

app.directive('dir', [function(){
  return{
            restrict: 'E',
            template: "<select ng-options='x for x in vm.arr'></select>",
            controllerAs: 'vm',
            link: function(scope) {
                scope.arr=["a", "b"];
            }
        };
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="dirApp">
<dir></dir>
  </div>

正如您所看到的,由于某种原因,列表中没有填充值。我做错了什么?

最佳答案

您必须将数据放入 Controller 中,并将ngModel添加到您的模板中。

指令

(function(){

  function dir() {
      return{
          restrict: 'E',
          template: "<select ng-model='vm.x' ng-options='x for x in vm.arr'></select>",
          controllerAs: 'vm',
          controller: function() {
            var vm = this;
            vm.arr = ["a", "b"];
            vm.x = vm.arr[0]
          }
        };
  }

angular
  .module('app')
  .directive('dir', dir);


})();

关于javascript - 为什么这个 Angular 选择包装器指令不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31881131/

相关文章:

javascript - 获取可能通过 Angular 范围的所有事件的列表。 $$听众数?

angularjs - 如何在 TypeScript 中实现 ng.IDirectiveFactory

angularjs - ng-model 与指令的其他属性

javascript - 设置在每个助手中使用渲染创建的 Controller

javascript - Angular : Service variable changes not applying

javascript - 使用 AngularJS 管理动态路由

javascript - 将范围值从指令传递到 Controller - AngularJS

javascript - 从 PHP 加载值时,textareas 的 autosize.js 中存在错误

javascript - 如何在焦点上显示/隐藏 div 内容?

javascript - CSS 下划线文本,数字位于行下方