9

我正在尝试将 ui-bootstrap.min.js 与外部模板一起使用。

我得到的错误是:

http://localhost:13132/Place/template/timepicker/timepicker.html 404 (Not Found) 

我想为每个页面,每个模板,在以下位置查找我的模板:

http://localhost:13132/js/app/template/...

但我似乎找不到可以更改 this 指向的位置的位置。

有人知道如何进行此更改吗?

4

3 回答 3

3

这可以使用$provide.decorator

阅读有关此问题的更多信息: https ://github.com/angular-ui/bootstrap/issues/743

myApp.config(function($provide) {
  $provide.decorator('datepickerDirective', function($delegate) {
    //array of datepicker directives
    $delegate[0].templateUrl = "my/datepicker.html";
    return $delegate;
  });
});

更新:我已经测试了这个解决方案,它也适用于其他模板,并且只需要对 app.js 进行那些小的更改。我现在用 timepicker.html 和 day.html 对此进行了测试,为 timepickerDirective 和 daypickerDirective 定义了一个装饰器。后者用于覆盖日历表显示。templateUrl 路径是相对于您的应用程序文件夹的,在我的例子中是"partials/fragments/day.html"

于 2014-07-09T19:06:07.753 回答
2

根据github 上的这个问题,templateUrl 是不可配置的。您可以更改每个指令定义中的 templateUrl 属性

.directive('accordion', function () {
    return {
        restrict:'EA',
        controller:'AccordionController',
        transclude: true,
        replace: false,
        templateUrl: 'template/accordion/accordion.html'
 };

但这将是脆弱且难以维护的。不幸的是,看起来他们不会使这个可配置的 - 但线程是一个有趣的阅读。

于 2013-09-23T00:51:02.030 回答
0

另一种不更改代码的替代方法是添加某种映射/Place/template到您的实际位置的虚拟服务器目录/js/app/template/

虚拟目录的实现显然是在您选择的服务器平台中。

于 2014-12-15T13:00:52.957 回答