Sjo*_*aar 2 angularjs angularjs-templates
我正在尝试在 AngularStrap 弹出窗口中加载模板文件,但是我在使用 $templateCache 时遇到问题。我似乎比其他问题退了一步,因此这看起来是双重的。
按照 API 文档,我<script type="text/ng-template" id="popoverTemplate.html"></script>在结束</body>标记之前添加了一个右侧。当我<div ng-include="'popoverTemplate.html'"></div>在我的页面上使用时,我什么也得不到。如果我尝试使用,console.log($templateCache.get("popoverTemplate.html"))我会得到“$templateCache 未定义”,这使我认为我错过了一个关键步骤。但是,我无法在文档或其他问题中找到如何做到这一点。
编辑:注入服务是缺失的环节。但是,当我注入服务时,控制器的其他功能不再起作用,但是如果您注入该函数的所有参数,工作代码将变为:
(function() {
"use strict";
angular.module("app").controller("managerController", ["$scope", "imageHierarchyRepository", "$templateCache", function ($scope, imageHierarchyRepository, $templateCache) {
imageHierarchyRepository.query(function(data) {
$scope.hierarchies = data;
});
var template = $templateCache.get("popoverTemplate.html");
console.log(template);
}]);
})();
Run Code Online (Sandbox Code Playgroud)
要使用模板脚本标签。您必须将其插入角度应用程序中。ng-app如果您不使用标签,则位于具有属性的元素或用于引导应用程序的元素内ng-app。
<body ng-app="myapp">
<div ng-template="'myTemplate.html'"></div>
<script type="text/ng-template" id="myTemplate.html">
// whate ever
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
如果您想检索应用程序组件上的模板,那么您需要将服务注入到您想要使用它的位置:
controller('FooCtrl', ['$templateCache', function ($templateCache) {
var template = $templateCache.get('myTemplate.html');
}]);
Run Code Online (Sandbox Code Playgroud)
或者
controller('FooCtlr', FooCtrl);
FooCtrl ($templateCache) {};
FooCtrl.$inject = ['$templateCache'];
Run Code Online (Sandbox Code Playgroud)
编辑
不要使用相同的名称注册两个控制器,因为这样您就会用最后一个控制器覆盖第一个控制器。
(function() {
"use strict";
angular.module("app").controller("managerController",["$scope", "imageHierarchyRepository", "$templateCache", function ($scope, imageHierarchyRepository, $templateCache) {
var template = $templateCache.get("popoverTemplate.html");
console.log(template);
imageHierarchyRepository.query(function(data) {
$scope.hierarchies = data;
});
}]);
})();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3519 次 |
| 最近记录: |