gpt4 book ai didi

javascript - 如何将环境特定的 URL 获取到我的 AngularJS Controller 中?

转载 作者:行者123 更新时间:2023-11-28 00:44:56 24 4
gpt4 key购买 nike

情况

我们生产中的 Web 项目有一个根 URL,如下所示:http://example.com。我们的本地开发实例(不要问我为什么)默认为如下 URL:http://localhost/SubDir 其中 SubDir 是 IIS 中实际虚拟子目录的占位符。

这不是问题。尽管我很想废除子目录 URL 的东西,但这只是说明了一个问题。如果我们稍后要移动到包含子目录 URL 的不同域或 URL,那么对于我们使用帮助程序生成 URL 的代码中的所有实例(例如 @Url.Action("GetUpdates") 等)。

目前,我们有相当多的 javascript 已移至外部 .js 文件,这些文件使用 jQuery 从隐藏输入中获取 URL 字符串,这些输入的值已设置为如上所述的 Url 帮助程序。这还不错,它有效。

问题

AngularJs。这不是问题。但它却暴露了问题。我们希望最终从项目中删除 jQuery。现在,我正在使用 jQuery 获取 Controller 中的 URL(如果我可以合理地确信稍后将有时间修复它,我愿意打破规则以努力按时完成某些内容)。现在是时候修复它了,我不知所措。

在这两个环境之间,我从 @Url.Action("GetUpdates") 得到以下内容:

  • http://example.com/ 上:=> /Contest/GetUpdates
  • http://localhost/SubDir 上:=> /SubDir/Contest/GetUpdates

问题

如何在不使用 Controller 文件中的帮助程序的情况下将环境相关的 URL 获取到我的 AngularJs Controller 中?我最初认为这可能就像使用隐藏输入和设置 ng-model 一样简单,但似乎不起作用。我还考虑过使用扩展 RazorJS,但希望有更好的方法来使其更符合 Angular 范例。

大家有什么想法吗?如何将 URL 获取到 Controller 中?

最佳答案

如果您能够更改服务器端的环境配置,您可以将变量内联到模块常量中。然后您可以注入(inject)到您的主应用程序中。

这是一个 Plunker

// inline
angular.module('Preload',[]).contstant('CONFIG', {'BASE_URL':'http://localhost/foo'});

// inject
var app = angular.module('MainApp', ['Preload']);

// Controller
app.controller('MainCtrl', function($scope, CONFIG) {
$scope.base_url = CONFIG.BASE_URL;

关于javascript - 如何将环境特定的 URL 获取到我的 AngularJS Controller 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27517406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com