Javascript 正在尝试转包select元素
我正在尝试创建一个名为select的指令,它将替换select元素。更准确地说,它隐藏了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 ng-model="selectedOption">
<option ng-repeat="option in options" ng-bind="option.value"></option>
</select>
现在,我看到了几个问题:
- transclude似乎取代了整个模板(请参阅)
- 有一个奇怪的
元素选项
- 如何获取绑定数据,因为我需要它来创建自定义下拉列表
更新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) {}
};
});