我正在创建一个选择替换指令,以便根据设计轻松设置选择样式,而不必总是正确地标记一堆标记(即指令为您完成它!)。
我没有意识到属性不会嵌入到您放置的位置ng-transclude
,而只是转到根元素。
我在这里有一个例子:http: //plnkr.co/edit/OLLntqMzbGCJS7g7h1j4 ?p=preview
你可以看到它看起来很棒......但是有一个主要缺陷。和属性没有被转移id
。name
哪一个,你知道,没有name
,它不会发布到服务器(此表单与现有系统相关联,因此不能选择 AJAXing 模型)。
例如,这是我开始的:
<select class="my-select irrelevant-class" name="reason" id="reason" data-anything="banana">
<option value="">Reason for Contact...</option>
<option>Banana</option>
<option>Pizza</option>
<option>The good stuff</option>
<option>This is an example of a really, really, really, really, really, really long option item</option>
</select>
...这就是我想要的样子:
<div class="faux-select" ng-class="{ placeholder: default == viewVal, focus: obj.focus }">
<span class="faux-value">{{viewVal}}</span>
<span class="icon-arrow-down"></span>
<select ng-model="val" ng-focus="obj.focus = true" ng-blur="obj.focus = false" ng-transclude class="my-select irrelevant-class" name="reason" id="reason" data-anything="banana">
<option value="">Reason for Contact...</option>
<option>Banana</option>
<option>Pizza</option>
<option>The good stuff</option>
<option>This is an example of a really, really, really, really, really, really long option item</option>
</select>
</div>
...但这就是实际发生的情况:
<div class="faux-select my-select irrelevant-class" ng-class="{ placeholder: default == viewVal, focus: obj.focus }" name="reason" id="reason" data-anything="banana">
<span class="faux-value">{{viewVal}}</span>
<span class="icon-arrow-down"></span>
<select ng-model="val" ng-focus="obj.focus = true" ng-blur="obj.focus = false" ng-transclude>
<option value="">Reason for Contact...</option>
<option>Banana</option>
<option>Pizza</option>
<option>The good stuff</option>
<option>This is an example of a really, really, really, really, really, really long option item</option>
</select>
</div>
具体来说,问题在于选择上没有name
属性,因此它实际上并没有将数据发送到服务器。
显然,我可以使用预编译阶段来传输name
和id
属性(这就是我现在正在做的事情),但是如果它只是自动传输所有属性以便他们可以添加任何类、任意数据、 (ng-)required,(ng-)disabled 属性等。
我试着transclude: 'element'
开始工作,但后来我无法将模板中的其他属性添加到它上面。
请注意,我在这里看到了帖子:如何转换为属性?,但看起来他们只是手动传输数据,我的目标是让它自动传输所有属性。