Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
局部变量打破了AngularJS_Angularjs_Angularjs Service - Fatal编程技术网

局部变量打破了AngularJS

局部变量打破了AngularJS,angularjs,angularjs-service,Angularjs,Angularjs Service,每当我尝试访问本地/引导变量时,我的AngularJS应用程序就会停止加载。为什么?我做错了什么 我正在将一个名为“bootstrapData”的变量保存到一个页面。我可以通过检查Chrome中的元素来查看变量 <script type="text/javascript">var bootstrapData = {"userInfo":{"name":"Joe Blow","emailAddress":"joe.blow@nowhere.com","gravatar":"https:

每当我尝试访问本地/引导变量时,我的AngularJS应用程序就会停止加载。为什么?我做错了什么

我正在将一个名为“bootstrapData”的变量保存到一个页面。我可以通过检查Chrome中的元素来查看变量

<script type="text/javascript">var bootstrapData = {"userInfo":{"name":"Joe Blow","emailAddress":"joe.blow@nowhere.com","gravatar":"https://secure.gravatar.com/avatar/asdf?s=48&r=x&d=retro"},"token":"asdf"};
配置文件服务本身为空。。。只是资源对象的占位符

angular.module('myApp').
    factory('Profile',
    //['$resource',
    //    function($resource){
    //
    //        var _profileResource = $resource('/api/users/:id', { _id: "@id" }, {
    //            update: { method: 'PUT', isArray: false }
    //        });
    //
    //        return _profileResource;
    //    }
    //]
    function(){
        var _profileResource = {};

        return _profileResource;
    }
);
如果您对注入的
配置文件
服务做了某些假设,因为它被用作构造函数
新配置文件()
,那么上面的代码可以正常工作(请参阅)

具体而言,如果定义如下-我正在更改名称,以使其更清楚地说明我所指的内容:

.factory("ProfileSvc", function ProfileFactory(){
  function Profile(){
    // constructor function
  }

  return Profile;
});
然后,
ProfileSvc
服务的注入实例将是构造函数
函数Profile(){…}

.factory("anotherSvc", function(ProfileSvc){

   // ProfileSvc here is a function object
   var profile = new ProfileSvc();
});
那么,什么是
函数配置文件工厂

这只是一个创建
ProfileSvc
实例的函数。它也可以是一个匿名函数。因为,至少在这个简单的例子中,您只是返回了一个对象-一个函数对象-您还可以将它写成
.constant

.constant("ProfileSvc", function Profile(){ });
或作为
.value

.value("ProfileSvc", function Profile(){ });

.factory
.service
.value
.constant
是创建注入单例服务实例的不同方法。

您所说的“超时”是什么意思?是冷冻的吗?另外,什么是注入的
配置文件
服务-您可以分享其代码吗?使用模拟的
配置文件对我来说一切正常:@NewDev:IF语句出现后,Chrome会像被锁定一样缓慢爬行。通常在<10毫秒内加载的站点(其他无关部分…导航等)需要3-4秒。最终整个页面都会超时。缺少的部分是您注入的
配置文件
服务(什么是
通知程序
?)。当您注入服务时,它是一个对象—由您执行
newprofile()
此对象需要是一个构造函数。这就是你所拥有的吗?@NewDev:很抱歉。。。添加了错误的代码片段。是的,配置文件是一个构造函数。除了它不是-它是一个空对象
{}
-您要返回的对象-
\u profileResource
。然后对空对象调用
new
.value("ProfileSvc", function Profile(){ });