我想创建一个指令,如果我声明:
<input my-directive show-button-bar="true" ng-model="fooBar"\>
这将创建下列HTML:
<div on-toggle="toggled(open)" is-open="dpModel.displayDatePicker" dropdown="" class="btn-group ng-scope">
<input my-directive show-button-bar="true" ng-model="fooBar"\>
<ul ng-click="$event.stopPropagation()" class="dropdown-menu datepicker-popup dropdown-menu-right">
<div ng-if="showButtonBar">
<div role="group" class="btn-group pull-left">
<button ng-click="setToday()" class="btn btn-xs btn-info" type="button">Today</button>
<button ng-click="clear()" class="btn btn-xs btn-danger" type="button">Clear</button>
</div>
<button ng-click="toggled(false)" class="btn btn-xs pull-right btn-success" type="button">Done</button>
</div>
</ul>
</div>
这里的代码片断我的指令,我试图做到这一点:
var dropdown = $compile(angular.element('<div class=\"btn-group\" dropdown is-open=\"dpModel.displayDatePicker\" on-toggle=\"toggled(open)\"/>'))(scope);
var ulTemplate = '<ul id=\"list2\"ng-if=\"showButtonBar\" class=\"dropdown-menu datepicker-popup\" ng-class=\"direction === \'right\' ? \'dropdown-menu-right\':\'dropdown-menu-left\'\" role=\"menu\" ng-click=\"$event.stopPropagation()\">' +
'<li ng-if=\"dpModel.displayDatePicker\">' +
'<datepicker ng-model=\"dpModel.value\" show-weeks=\"false\"></datepicker>' +
'</li>' +
'<div ng-if=\"showButtonBar\">' +
'<div class=\"btn-group pull-left\" role=\"group\">' +
'<button type=\"button\" class=\"btn btn-xs btn-info\" ng-click=\"setToday()\">Today</button>' +
'<button type=\"button\" class=\"btn btn-xs btn-danger\" ng-click=\"clear()\">Clear</button>' +
'</div>' +
'<button type=\"button\" class=\"btn btn-xs pull-right btn-success\" ng-click=\"toggled(false)\">Done</button>' +
'</div>' +
'</ul>';
var ul = $compile(angular.element(ulTemplate))(scope);
element.wrap(dropdown);
ul.insertAfter(element);
我遇到的问题是UL部分
var ul = $compile(angular.element(ulTemplate)(scope))
将与范围正确编译但皮部dropdown
不能正常获取的范围。这怎么可能?我究竟做错了什么?
更新: 忘了还提到,我需要在输入字段上有一个ng模型。
这看起来像我想要采取的方法。但是,当我由于某种原因运行该代码时,它会在前置inputElement时出现某种无限循环。它只是不断崩溃我的浏览器,但是当我删除“.prepend(inputElement.clone())”时,它会停止无限循环。不知道问题是什么。 – user1200387 2014-11-24 16:12:11