如何设置要从web.config中读取的AngularJs SPA Urls

Xma*_*re2 0 web-config angularjs web.config-transform

我有AngularJS控制器和服务,它们引用服务器1中托管的一部分代码。因此,要获取或发布数据,我必须引用

var getUsers = $resource('http://localhost:2211/projectname/users/getusers', 
{
    id: viewModel.user.Id
}); 

getUsers.get(function (result: users.usersResource)
{
   if(result != null)
   {
       $scope.viewModel.firstName = result.firstName; 
   }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何设置web.config文件来保存上面提到的网址,并从我的控制器或服务页面调用它,而不是每次执行发布或获取时都对网址进行硬编码。

请帮忙。

sks*_*laj 5

有一个比这更简单的方法,您可以直接从razor中读取javascript:

假设我希望_Layout.cshtml包含所有视图的值,因此请在您的cshtml中:

<!DOCTYPE html>
<html ng-app="WebAthena" ng-controller="AppController">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/css")
    <script>
        var WebApiBaseUri = '@System.Configuration.ConfigurationManager.AppSettings["WebApiBaseUri"]';
    </script>
</head>
Run Code Online (Sandbox Code Playgroud)

请注意,在脚本中,我能够将razor中的c#代码注入javascript。我还用一对撇号“”包装了C#代码

当我运行代码时,这就是我的javascript的样子:

var WebApiBaseUri = 'http://localhost:40567';
Run Code Online (Sandbox Code Playgroud)

由于此脚本会尽早执行,因此angular可以将其识别为全局变量。

或者您可以在角度常数内注入它,因此可以将以上代码行更改为:

//var WebApiBaseUri = '@System.Configuration.ConfigurationManager.AppSettings["WebApiBaseUri"]';
app.constant("WebApiBaseUri", '@System.Configuration.ConfigurationManager.AppSettings["WebApiBaseUri"]');
Run Code Online (Sandbox Code Playgroud)

转换为:

//var WebApiBaseUri = 'http://localhost:40567';
app.constant("WebApiBaseUri", 'http://localhost:40567');
Run Code Online (Sandbox Code Playgroud)

然后您可以将此代码注入角度控制器,工厂,服务等