Angularjs在custom指令中的范围用法

时间:2014-05-06 04:54:32

标签: javascript angularjs angularjs-directive angularjs-scope

我正在尝试通过指令创建一个下拉框而不用创建一个单独的控制器。 这是我的代码:

的index.html

<dropdown option="myoptions" />

的script.js

serviceModule.directive('dropdown',function() {
    return {
        restrict: 'EA',
        replace:true,
        scope: {
            options:'='
        },
        template: '<select ng-options="opt in myoptions"></select>',
        controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {
            $scope.myoptions = ['1','2','3'];
        }],
    }
});

该脚本既不会产生错误,也不会在下拉列表中显示任何选项。 你能解释一下我做错了吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

ng-options需要label for value in array格式comprehension expression。您需要为ng-model添加select才能正常工作。

template: '<select ng-model="choice" ng-options="opt for opt in myoptions"></select>',
controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {
    $scope.choice;
    $scope.myoptions = ['1','2','3'];
}],

这是一个工作的掠夺者:http://plnkr.co/edit/8a6gwpVnMfvXxZzvQBOs?p=preview