如何在引导期间将对象传递给角度?

时间:2015-12-15 17:07:48

标签: angularjs

在我的主页上将自动引导角度(最初加载),我将拥有一个我的应用程序生成的具有用户信息的对象(isLoggedIn,用户名等)。

我没有看到加载角度的点,然后进行额外的API调用以获取此信息。

如何将此传递给角色?

3 个答案:

答案 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中注册才能提供这些请求)

请注意,我包含了非工作代码,它仅用于指导您的解决方案。

希望有所帮助