javascript - Angular.js $compile 不起作用

标签 javascript angularjs angularjs-directive datepicker angularjs-bootstrap

我尝试将项目中的所有输入类型日期更改为 uib-picker-popup,我使用指令和 $compile 但新元素不起作用。当我将结果 html 放入新的 .html 时,它工作正常,我猜 $compile 有一些问题。

源代码

<input type="date" ng-model="picker" />

指令

angular.module('ui.bootstrap.demo').directive('input', function ($compile) {
    return {
      require: 'ngModel',
      compile: function (tElem, tAttr) {
        if (tAttr.type !== 'date') {
          return;
        }

        return function (scope, elm, attrs, ngModelCtrl) {
            var ngModel   = elm.attr('ng-model');
            var name      = elm.attr('name');
            var className = elm.attr('class');
            var newElement = '<input type="text" class="' + className + '" ng-model="' + ngModel + '" name="' + name + '" uib-datepicker-popup is-open="isOpen">' +
                '<button type="button" class="btn btn-primary" ng-click="isOpen = true">+</button>';
            elm.replaceWith($compile(newElement)(scope));
        };
      }
    };
  });

结果 html

<input type="text" class="ng-pristine ng-valid ng-scope ng-isolate-scope ng-valid-date ng-touched" ng-model="picker" name="undefined" uib-datepicker-popup="" is-open="isOpen" style="">

<button type="button" class="btn btn-primary ng-scope" ng-click="isOpen = true">+</button>

plunker here

感谢您的帮助!

最佳答案

只需将其包裹起来即可使用:

var newElement = '<div><input type="text" class="' + className + '" ng-model="' + ngModel + '" name="' + name + '" uib-datepicker-popup is-open="isOpen">' +
                '<button type="button" class="btn btn-primary" ng-click="isOpen = true">+</button></div>';
elm.replaceWith($compile(newElement)(scope));

http://plnkr.co/edit/JPSpVyWgDJeC0NtNhnib?p=preview

关于javascript - Angular.js $compile 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35507237/

相关文章:

Javascript错误加载图像淡入

javascript - 访问 Node 请求的body属性

javascript - jquery ui - 可排序 : get new position of all elements

javascript - ng-Grid 中的动态 columnDef

javascript - Angularjs 指令附加 $http 请求

AngularJS:动态编译指令模板时的正确范围绑定(bind)

php - 关于转义用户提交的 html、javascript 和 PHP 内容的概述和流程图

javascript - AngularJS 在页面加载时加载数据

javascript - 我的 Angular View 未显示我的数据

javascript - angularjs - 自定义指令名称 "smart-float"