2017-07-07 55 views
1

我有一個場景,我需要在$ 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。

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

任何幫助,將不勝感激。

回答

0

您可以使用$templateRequest服務。像這樣:

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