在我的主页上将自动引导角度(最初加载),我将拥有一个我的应用程序生成的具有用户信息的对象(isLoggedIn,用户名等)。
我没有看到加载角度的点,然后进行额外的API调用以获取此信息。
如何将此传递给角色?
答案 0 :(得分:4)
angular.module('myApp').value('myVariable', myVariable)
这会将对象加载到可注入的静态对象中。请注意,在确定对象存在且具有正确的值之后,您需要调用此方法。
此外,通常人工注入window
对象的对象已经可用于角度(但是,这是不良做法)。
因此,如果您的变量设置如下:
// without var!
myObj = { isLoggedIn: true, username: 'myUser' }
或:
window.myObj = { isLoggedIn: true, username: 'myUser' }
应该可以从window
获取。请注意,注射方法是首选。
答案 1 :(得分:0)
您可以使用run()函数执行登录操作:
angular.module("app", [])
.run(function() { ... })
而且,如果您需要在运行功能和控制器之间共享数据,您可以使用服务:
angular.module("app", [])
.service("myService", function { ... })
.run(function(myService) { ... })
.controller("myController", function(myService) { ... })
请参阅jsbin
的完整示例答案 2 :(得分:0)
好的,如果你有服务器代码,那么你需要使用服务器代码生成angularjs代码。您可以使用以下几种方法:
a)如果使用服务器代码生成angularjs页面/视图,则添加javascript块非常容易。使用Razor的例子:
@{
var userContextJsonString = Model.UserContextJsonString;
}
<script>
(function(window){
window.angularAppModule.value('userContext', @userContextJsonString);
})(window);
</script>
b)如果您的视图/页面是静态的,那么它有点棘手。创建某种HTTP处理程序(页面,MVC控制器,HTTP处理程序等),使用生成的javascript代码向客户端发送javascript响应
在您的HTML视图/页面中:
<script src="~/jsservergenerator?file=usercontext.js" />
并在您的HTTP处理程序中(使用ASP.NET处理程序的示例)
public class JsServerGenerator : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var userContextJsonString = ...;
context.Response.Write(@"
(function(window){
window.angularAppModule.value('userContext', " + userContextJsonString + @");
})(window);");
//set headers
}
}
(HTTP处理程序必须在web.config中注册才能提供这些请求)
请注意,我包含了非工作代码,它仅用于指导您的解决方案。
希望有所帮助