Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在尝试转包select元素_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 正在尝试转包select元素

Javascript 正在尝试转包select元素,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在尝试创建一个名为select的指令,它将替换select元素。更准确地说,它隐藏了select元素并显示了一个自定义下拉列表。这是一个我试图做到这一点的例子 因此,假设以下选择元素: <select ng-model="selectedOption"> <option ng-repeat="option in options" ng-bind="option.value"></option> </select> 现在,我看到了几个问

我正在尝试创建一个名为select的指令,它将替换select元素。更准确地说,它隐藏了select元素并显示了一个自定义下拉列表。这是一个我试图做到这一点的例子

因此,假设以下选择元素:

<select ng-model="selectedOption">
    <option ng-repeat="option in options" ng-bind="option.value"></option>
</select>
现在,我看到了几个问题:

  • transclude似乎取代了整个模板(请参阅)
  • 有一个奇怪的
    选项
    元素
  • 如何获取绑定数据,因为我需要它来创建自定义下拉列表
希望有人能帮我

Thnx

更新:我要澄清的是,我之所以要排除select元素是因为来自magic。例如,如果用户在自定义下拉列表中选择一个选项,则指令将在隐藏的本机选择元素中选择该选项。这样,像$prestine这样的表单就可以了


更新2:找到了一种或多或少满足我需要的方法:。但是,我现在必须重命名指令:(并且它感觉有点像我得到选项数组的一个黑客!

< p>如果,对于UpDeTe2,你只需要一个不太苛刻的方式来访问选项数组,考虑将它作为指令范围内的属性添加。< /P> 指令:
范围:{name:'@',选项:'='},

html:


或者,您可以创建自定义下拉元素,并将其附加到现有的select元素:
myApp.directive('select',function($compile){
返回{
限制:'E',
链接:函数(范围、元素、属性){
var custom=angular.element('\
\
  • \ \ '); 自定义.insertAfter(元素); $compile(定制)(范围); } }; });
  • 从中看到它


    当然,如果insertAfter没有将原始选择放在您想要的位置,您可以调整其位置。

    您可能需要签出ng options指令,它可能会提示您创建所需内容。ng options是“首选”选项重复ng的方法我不知道ngOptions会解决哪个问题?最初的想法是用自定义下拉菜单替换选择元素。添加
    options
    属性(以及selectx)会改变这个想法
    <section>
        <div ng-transclude></div>
        <ol> <!-- custom dropdown/select -->
            <li ng-repeat="option in options" ng-bind="option.value">
        </ol>
    </section>
    
    myApp.directive('select', function() {
        return {
            templateUrl: 'view/select.html',
            restrict: 'E',
            transclude: true,
            scope: {},
            link: function(scope, element, attrs) {}
        };
    });