【发布时间】:2014-08-14 14:26:48
【问题描述】:
我有点困惑。我正在尝试在我的控制器中获取我的解析数据。我阅读了这些(以及更多)解决方案,但无法使其正常工作。都是关于“页面”的。
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