现在我可以在我的AppCtrl中执行我的服务,但这不对。因为只有当用户指向page2时才需要该服务。当page2状态处于活动状态时,如何执行我的服务?我试过决心,但无法正常工作。
app.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('home');
$stateProvider.state('home', {
url: '/home',
templateUrl: 'home.html'
})
$stateProvider.state('page2', {
url: '/page2/:topicId',
templateUrl: 'page2.html'
// call my service here?
});
});
app.controller('AppCtrl', ['$scope', 'getTopicContent', function($scope,getTopicContent){
getTopicContent.request().success(function(data){
$scope.myList = data;
});
}]);
app.factory('getTopicContent', ['$http', function($http){
var query = function() {
return $http({
url: "http://www.corsproxy.com/mydata.me/level1/list.php",
method: "GET"
})
}
return {
request : function(){
return query();
}
}
}]);
答案 0 :(得分:0)
您可以为您的页面创建一个控制器并在那里注入服务。
$stateProvider.state('page2', {
url: '/page2/:topicId',
templateUrl: 'page2.html',
controller: 'Page2Ctrl'
});
然后你的控制器看起来像
app.controller('Page2Ctrl', ['$scope', 'getTopicContent', function($scope,getTopicContent){
getTopicContent.request().success(function(data){
$scope.myList = data;
});
}]);
如果你想尝试解决,你可以做这样的事情
$stateProvider.state('page2', {
url: '/page2/:topicId',
templateUrl: 'page2.html',
controller: 'Page2Ctrl',
resolve: {
content: getTopicContent.request().success(function(data){
return $scope.myList = data;
});
}
});
然后在您的Page2Ctrl中,您可以验证此内容
app.controller('Page2Ctrl', ['$scope', 'getTopicContent', function($scope, content){
if (content) {
$scope.content = content;
}
}]);