在$ compile

时间:2017-07-07 05:54:08

标签: 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错误:语法错误,无法识别的表达式:./ expandAdenChildItem.template.html

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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