javascript - 指令中 templateUrl 的 Angular 路由

标签 javascript angularjs asp.net-mvc asp.net-mvc-4

我正在 MVC 中构建一个 Angular 应用程序。我在我的应用程序中创建了一个 Angular Directive(指令),如下所示。

app.directive('clusterButton', function () {
return {
    restrict: 'E',
    scope: {
        clusterInfo: '=info'
    },
    templateUrl: function(elem, attr){
        return 'Views/NgTemplates/ClusterButton.html';
    }
};
});

我已在 Views/NgTemplates 文件夹中创建 ClusterButton.html。我在 index.cshtml 文件中使用了这个指令,如下所示。

<div ng-controller="homeController" class="row clusters_main">
        <div ng-repeat="cluster in Clusters" ng-init="selectedClusterId = '#'">
            <cluster-button info="cluster"></cluster-button>
        </div>
    </div>

现在, Angular Directive(指令)在我看来已正确渲染。但我不喜欢在指令中指定完整的模板 url ['Views/NgTemplates/ClusterButton.html']。我需要像 template/ClusterButton 一样缩短它。它需要跟踪 Angular js 路由并需要重定向到“Views/NgTemplates/ClusterButton.html”。我不想让mvc路由参与这个过程。有人知道实现这个的正确方法吗?我浏览了很多网站。但大部分内容都是关于使用 ng-view 进行 View 渲染。我想在 Angular 路由中指定指令的模板url。

最佳答案

据我所知,Angular 没有内置任何东西来解决这个问题,但是有一些策略可以处理您的情况:

  1. 您可以使用“grunt-angular-templates”之类的东西,它会获取您的模板文件并将其放入 JavaScript 文件中以“缓存”它们。它使用模板的路径作为缓存键,因此您只需将路径更改为“ClusterButton.html”,并确保处理“Angular-template”以生成相同的键。

  2. 使用 <base />标签。问题是您的所有静态资源都将与之相关。

  3. 只需创建一个常量来保存每次重复的路径部分,并使用该常量构建路径,例如:templateUrl: myConstats.directivesPath + '/ClusterButton.html'

关于javascript - 指令中 templateUrl 的 Angular 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34285914/

相关文章:

javascript - 不太清楚 JSON 及其在 Angular 上的用途

javascript - 未捕获的类型错误 : Cannot read property 'init' of undefined on zTree_v3 library

javascript - 如何使用 Express.js 和 axios 更新 mongoDB 中的值

events - AngularJS:如何在 promise 完成后防止事件的默认()?

c# - 在带有 Entity Framework 的 ASP.NET MVC 中,此上下文仅支持原始类型或枚举类型

javascript - 如何区分 onKeyDown 和 onClick 事件(输入 =“radio” )

javascript - Directionsservice 路线航点文字

javascript - AngularJS 使用两种数据绑定(bind)方式在 img 元素标签中显示图像作为源?

asp.net-mvc - 域驱动设计新手,请简要说明 'value objects'和 'services'

c# - MVC 绑定(bind)复选框以反转其含义