我想創建一個指令,如果我聲明:
<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