gpt4 book ai didi

AngularJS 类型错误 : Cannot read property 'protocol' of undefined

转载 作者:行者123 更新时间:2023-12-02 03:36:49 29 4
gpt4 key购买 nike

我已经更改了我的 AngularJS 应用程序中的 $http > URL 参数

       $http({ method:'POST',
url:'http://localhost/api/clients.php'
}).success(function(data,status,headers,config){
deferred.resolve(data);
}).error(function(data,status,headers,config){
deferred.reject(status);
});

       $http({ method:'POST',
url: ConfigService.Urls.Clients
}).success(function(data,status,headers,config){
deferred.resolve(data);
}).error(function(data,status,headers,config){
deferred.reject(status);
});

其中ConfigService如下:

Urls: {},
loadUrls: function(){
Urls.Clients = 'http://localhost/api/clients.php';
}

当然,我在通过 .Resolve 加载 Controller 之前调用了 loadUrls,所以我 100% 确定 Urls.Clients 不为空。

进行此更改后,我开始收到错误消息:

TypeError: Cannot read property 'protocol' of undefined
at urlIsSameOrigin (http://localhost/myapp/app/lib/angular/angular.js:13710:17)
at $http (http://localhost/myapp/app/lib/angular/angular.js:7508:23)

令人困惑的是应用程序工作正常,除了我遇到的那个错误...有人可以告诉我我在这里做错了什么吗?以及如果应用程序已经正常运行,为什么我会收到此错误。

最佳答案

这显然是顺序问题。 loadUrls 直到 $http 调用第一次运行后才会被调用。这可能是因为 Controller 不一定按您期望的顺序加载 - 您不能指望路由提供商在运行其他 Controller 之前打开并启动您的家庭 Controller - 这将取决于事情的设置方式。鉴于您在此处提供的代码量,很难说出顺序方面到底出了什么问题。

请记住,您有几个通用选项可以解决此问题:

  • 总是在运行 $http 请求之前调用 loadUrls()。这不是很优雅,但可以解决问题
  • 包装所有的$http 调用并在该包装器中调用loadUrls()。这比之前的稍微好一些,因为如果您需要更改 loadUrls() 或确保它只被调用一次,您可以稍后实现该逻辑。
  • 您已经观察到这一点,但您可以将初始化更改为直接在服务中进行,而不是在服务提供的例程中进行。这将解决问题,尽管它可能会让您在每次 url 更改时都必须更新服务的地方。
  • 忍受错误,知道当 Controller 加载时它会在那个时间点实例化并获取正确的数据。我通常不喜欢这样的解决方案,因为它可能会在以后导致难以追踪的错误,但如果您不喜欢之前的任何选项,这在技术上可能没问题。
  • 使用一个应用程序配置,它在应用程序加载时执行(请注意,并非所有资源都被初始化,并且不允许注入(inject))。一个例子 from the documentation :

    angular.module('myModule', []).
    config(function(injectables) {
    // provider-injector
    // This is an example of config block.
    // You can have as many of these as you want.
    // You can only inject Providers (not instances)
    // into config blocks.
    }).

    您可以使用这个或运行 block 来初始化您想要的东西

我敢肯定还有其他选项,具体取决于您的代码结构,但希望这至少能让您入门。祝你好运!

关于AngularJS 类型错误 : Cannot read property 'protocol' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840833/

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