Plunker Code Showing Issue Described Below
http://plnkr.co/edit/Bz3Qhf1eDuFrnKI0qnUo?p=preview
我使用AngularUI套件的两个组件,UI-Router和UI-Bootstrap。 当用户点击我的顶部导航栏链接时,UI-Router负责加载模板。
只有“UI窗口小部件模板”(AngularUI-Bootstrap和Alert)下的前两个链接处于活动状态
UI-Bootstrap负责在模板中制作漂亮的小部件。 我似乎正确配置了UI-Router,因为我正在加载正确的模板,这些模板可以访问正确的控制器。我遇到的问题是我的UI-Bootstrap组件无法加载并生成奇怪的错误,似乎表明他们在某种程度上试图自己加载模板??? 我在实现中错误处理了什么导致Bootstrap-UI指令无法加载?
警告下拉链接的HTML模板
<tabset>
<tab heading="Static title">Static content</tab>
<tab ng-repeat="tab in tabs" heading="{{tab.title}}" active="tab.active" disabled="tab.disabled">
{{tab.content}}
</tab>
<tab select="alertMe()">
<tab-heading>
<i class="icon-bell"></i> Select me for alert!
</tab-heading>
I've got an HTML heading, and a select callback. Pretty cool!
</tab>
</tabset>
{{tabs}}
加载警报模板时来自控制台的错误消息
Angular Goodness
angular.module("uiRouterExample", [
'ui.router',
'ui.bootstrap']).config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'templates/home.html',
controller: 'BSCtrl'
})
.state('angularBS', {
url: '/angularBS',
templateUrl: 'templates/angularBS.html',
controller: 'BSCtrl'
})
.state('alert', {
url: '/alert',
templateUrl: 'templates/alert.html',
controller: 'BSCtrl'
})
;
})
.controller('BSCtrl', function ($scope) {
$scope.tabs = [
{ title:"Accordion", content:"Dynamic content 1" },
{ title:"Alert", content:"Dynamic content 2"},
{title:"Buttons", content:"More Dynamic Content"}
];
$scope.test="Hello World";
$scope.alerts = [
{ type: 'error', msg: 'Oh snap! Change a few things up and try submitting again.' },
{ type: 'success', msg: 'Well done! You successfully read this important alert message.' }
];
$scope.addAlert = function() {
$scope.alerts.push({msg: "Another alert!"});
};
$scope.closeAlert = function(index) {
$scope.alerts.splice(index, 1);
};
});
答案 0 :(得分:19)
UI-Bootstrap依赖于ui-bootstrap- [version] .js文件中不存在的模板。构建文件配置选项描述为here。相关摘录:
名称中包含-tpls的文件 与指令捆绑在一起的特定于引导程序的模板。适合那些人 想要采取所有指令,不需要定制任何东西 解决方案是获取一个名为的文件 UI-自举-tpls- [版] .min.js。如果,另一方面默认 模板不是你需要的 ui-bootstrap- [version] .min.js并提供你自己的模板......
在plunkr中,你使用的是ui-bootstrap-0.7.0.js,而不是ui-bootstrap-tpls-0.7.0.js。前者未与模板捆绑在一起,但仍然在指令'templateUrls下对它们进行硬编码引用,例如:
.directive('alert', function() {
return {
...
templateUrl:'template/alert/alert.html',
...
};
}])
编辑,包括@ inolasco的回答:
如果您使用ui-bootstrap-tpls.js但仍有此问题,则可能需要添加
'ui.bootstrap.tpls'
到您的模块。
答案 1 :(得分:12)
添加到接受的答案,这导致我解决类似的问题。如果您使用 ui-bootstrap-tpls.js 但仍有此问题,则可能需要添加
'ui.bootstrap.tpls'
到你的模块。这对我有用。