Angularjs 如何创建填充a<;选择>;在指令模板中?

Angularjs 如何创建填充a<;选择>;在指令模板中?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我创建了这个Plnkr: var-app=angular.module('plunker',[]); 应用程序控制器('MainCtrl',函数($scope){ $scope.options={“id”:1,“name”:“One”}, {“id”:2,“name”:“Two”}, {“id”:3,“name”:“三”}; $scope.exam=99; $scope.typeChanged=函数(){ 警报($scope.exam) } }); 应用程序指令(“adminSelect”,函数

我创建了这个Plnkr:

var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.options={“id”:1,“name”:“One”},
{“id”:2,“name”:“Two”},
{“id”:3,“name”:“三”};
$scope.exam=99;
$scope.typeChanged=函数(){
警报($scope.exam)
}
});
应用程序指令(“adminSelect”,函数(){
返回{
限制:“A”,
要求:'ngModel',
范围:{
adminChange:“&”,
adminModel:“=”,
选项:“=”
},
模板:“”,
控制器:函数($scope、$element、$attrs){
}
};
});
以下是调用指令的HTML:

<div admin-select
  label="ExamType"
  admin-change="typeChanged()"
  admin-model="exam"
  options="options"></div>

  Type: {{ exam }}

类型:{{exam}

有人能告诉我为什么我的选择框没有填充以及我如何获得警报以提供正确的值吗?

您的$scope.options不是数组

你忘了把它包装成一个[]

$scope.options = [{"id":1,"name":"One"},
               {"id":2,"name":"Two"},
               {"id":3,"name":"Three"}];

我认为你正试图做这样的事情:


谢谢我更新了Plunker。你知道为什么我选择时警报没有显示正确的值吗?没错,但我的问题是获取警报中显示的正确值。你能试一试我创建的柱塞吗?你可以看到它没有给出正确的数字。“玛丽萝,哦,我明白了,给我5分钟,我在别的事情的中间,我一完成就更新答案。”顺便说一句,你检查过我的plunker吗?@Joseph-是的,我检查过你的plunkr,谢谢,它可以工作,但你的版本不包括值的警报。谢谢您的帮助。@Marilou您会很高兴知道我已经为您的问题找到了解决方法,请查看我的最新更新,谢谢@谢谢。我现在将对此进行调查并尝试一下。
$scope.options = [{"id":1,"name":"One"},
               {"id":2,"name":"Two"},
               {"id":3,"name":"Three"}];
var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.options = [{"id":1,"name":"One"},
                   {"id":2,"name":"Two"},
                   {"id":3,"name":"Three"}];
  $scope.typeChanged = function(){alert("it changed!");};
  $scope.exam = $scope.options[0];
});

app.directive("adminSelect", function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        scope: {
            label: '=adminLabel',
            change: "&adminChange",
            innerModel: "=adminModel",
            options: "=adminOptions"
        },
        template: '<div><select ng-change="change()" \
                          ng-model="innerModel" \
                          ng-options="item.name for item in options"></div>'
    };
}); 
var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.options = [{"id":1,"name":"One"},
                   {"id":2,"name":"Two"},
                   {"id":3,"name":"Three"}];
  $scope.typeChanged = function(item){alert(item.name);};
  $scope.exam = $scope.options[0];
});

app.directive("adminSelect", function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        scope: {
            label: '=adminLabel',
            change: "&adminChange",
            innerModel: "=adminModel",
            options: "=adminOptions"
        },
        template: '<div><select ng-change="innerTypeChanged()" \
                          ng-model="innerModel" \
                          ng-options="item.name for item in options"></div>',
        controller: function($scope){
          $scope.innerTypeChanged = function(){
            $scope.change({item:$scope.innerModel});
          };
        }
    };
}); 
  admin-change="typeChanged(item)"