【问题标题】:Angularjs: How to get my resolve data in my controller?Angularjs:如何在我的控制器中获取我的解析数据?
【发布时间】:2014-08-14 14:26:48
【问题描述】:

我有点困惑。我正在尝试在我的控制器中获取我的解析数据。我阅读了这些(以及更多)解决方案,但无法使其正常工作。都是关于“页面”的。

http://jsfiddle.net/Avb4U/1/

http://www.jvandemo.com/how-to-resolve-angularjs-resources-with-ui-router/#

Angularjs resolve with controller as string

我希望这不是一个重复的问题,因为这些解决方案对我没有任何帮助。

这是(所有州的一部分)我的州:

.state('root.search', {
    url: '/search/:searchterm',
    onEnter: ['$rootScope', function($rootScope) {
        $rootScope.bodyclass = 'search';
    }],

    resolve : {
        spages: ['$stateParams', 'SearchPages', function($stateParams, SearchPages) {
            return SearchPages.get({'searchterm': $stateParams.searchterm});
        }]
},
    controller: 'searchCtrl',
    views: {
        '@': {
              templateUrl: templateUrlFunction('search')
             }
    }

})

这是我的控制器的一部分:

app.controller('searchCtrl', ['$scope', 'spages', function($scope, spages) {
    // spages should be already resolved and injected here
}

这是我的搜索页面工厂:

app.factory('SearchPages', ['$resource', function($resource) {
    return $resource(null, {},
            {
                get: {
                    method: 'GET',
                    url: '/json/search/get/searchterm/:searchterm',
                    params: {searchterm: '@searchterm'}
                }
            });
}]);

据我所知,现在应该解析页面并将其注入控制器。但事实并非如此。

我得到的错误是:

Error: [$injector:unpr] Unknown provider: spagesProvider <- spages

我做错了什么?我还在学习中……


好吧,我没有意识到我的模板中还有一个控制器。

我读到:“你只需要在 app.js 中指定一次控制器。第二个,在 html 代码中,由 ngController 指令实例化,它不知道“resolve”,所以它抛出一个例外。”

【问题讨论】:

  • 检查,但这应该不是问题。控制器需要解析中的“searchpages”字符串。但是,更好的命名会避免混淆,我同意。我确实编辑了我的代码,所以它不那么混乱。
  • 这么久你找到解决办法了吗?
  • 对不起卢西奥,我不记得了。已经有一段时间在不同的公司了......我想我在提交按钮上做了一个 ajax 调用,然后:code$scope.searchpages.pages = result;

标签: angularjs controller state resolve


【解决方案1】:

将您的控制器依赖项从 searchpages 更改为 SearchPages。

app.controller('searchCtrl', ['$scope', 'SearchPages', function($scope, searchpages) {
    // searchpages should be already resolved and injected here
}

【讨论】:

  • 我认为我的名字命名令人困惑。对于那个很抱歉。我编辑了我的代码。据我了解文档,“spages”应该在解决后在控制器中可用。
  • 是的,应该可以。当我发布我的答案时我没有看到。
猜你喜欢
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多