javascript - 在 $compile 中传递模板 URL

标签 javascript angularjs angular-directive

我有一个场景,我需要在 $compile 中传递模板 URL 路径,而不是像下面这样的模板。

function addSubmenu() {
    scope.subMenuAdded = true;
    scope.subMenuVisible = true;
    scope.menuItemClickHandler = function(menuItem) {
        menuController.itemClickHandler.call(menuController, menuItem);
    };
    $compile('<apt-expandable-menu data-menu="menuItem.children" data-on-menu-item-click="menuItemClickHandler" ng-if="subMenuVisible"></apt-expandable-menu>')(scope, function(cloned){
        element.append(cloned);
    });
}

我需要传递如下所示的模板 URL,而不是 $compile 中的实际模板。

function addSubmenu() {
    scope.subMenuAdded = true;
    scope.subMenuVisible = true;
    scope.menuItemClickHandler = function(menuItem) {
        menuController.itemClickHandler.call(menuController, menuItem);
    };
    $compile('./expandableMenuChildItem.template.html')(scope, function(cloned){
        element.append(cloned);
    });
}

并在expandableMenuChildItem.template.html中:

<apt-expandable-menu data-menu="menuItem.children" data-on-menu-item-click="menuItemClickHandler" ng-if="subMenuVisible"></apt-expandable-menu>

但它给我一个错误:

angular.js:14199 错误:语法错误,无法识别的表达式:./expandableMenuChildItem.template.html

如有任何帮助,我们将不胜感激。

最佳答案

您可以使用$templateRequest服务。就像这样:

$templateRequest('nameOfTemplate.html').then(function(template){
    $compile(template)(scope, ..);
});

关于javascript - 在 $compile 中传递模板 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44963441/

相关文章:

javascript - Angular 扩展 ui.bootstrap.progressbar 以支持进度条上的某些文本

angular - 无法通过自定义指令以编程方式启用和禁用 matTooltip

javascript - Jasmine Angular 测试指令应该失败

javascript - 实例创建

php - 一个页面上有多个表单,并决定使用PHP 提交了哪个表单?

javascript - AngularJS 过滤格式化日期

javascript - ng-toggle,添加到数组,

angular - 使用 ngFor 创建不同的元素类型

javascript - 将具有相同属性的对象数组转换为具有数组值的一个对象

javascript - 将 jQuery 触发器中的事件参数发送到 iframe