在resolve
$stateProvider
属性
我是angularjs的新手,并尝试使用像
这样的stateProvider$stateProvider
// Category routes
.state('category', {
url: '/category',
templateUrl:'public/templates/category/category.html',
})
.state('category.list', {
url: '/list',
templateUrl:'public/templates/category/category.list.html',
resolve: {
// A String value resolves to a service.
categoriesResource: 'categoriesResource',
categories: function(categoriesResource) {
return categoriesResource.query();
}
},
controller: 'CategoryCtrl',
})
.state('category.new', {
url: '/new',
templateUrl: 'public/templates/category/category.new.html',
resolve: {
categories: function() {
return {}
}
},
controller: 'CategoryCtrl',
})
.state('category.update', {
url:'/{id:[0-9]{1,4}}',
templateUrl: 'public/templates/category/category.update.html',
resolve: {
categoriesResource: 'categoriesResource',
categories: function(categoriesResource) {
return categoriesResource.query({id:$stateParams.id});
}
},
controller: 'CategoryCtrl',
})
并且在类别控制器中我传递的参数如
.controller('CategoryCtrl', ['$scope', '$state', 'categories', '$location', function($scope, $state, categories, $location) {
$scope.categories = categories;
}])
现在,只有当我调用categories
州时,resolved
中的问题才会list
对于new
和update
,我不需要categories
,如果是update
,我想传递category
中的CategoryCtrl
处理此问题的最佳方法是什么。
答案 0 :(得分:0)
- >首先定义控制器
function ContactController($scope) {
//...
}
- >让我们检查语法以创建模块并向其添加控制器:
var myApp = angular.module('myApp',[]);
myApp.controller('ContactController', ['$scope', function($scope) {
$scope.contacts = ["hi@email.com", "hello@email.com"];
$scope.add = function() {
$scope.contacts.push($scope.contact);
$scope.contact = "";
}
}]);
在上面的例子中,我们使用angular.module()方法创建了一个名为myApp的模块。然后我们在这个模块中添加了一个控制器ContactController。这只是定义控制器的另一种方法,但推荐使用。
答案 1 :(得分:0)
您应该定义两个不同的控制器。第一个控制器应该是list
场景中使用的CategoryListController。然后,可以categories
到resolve
。
第二个控制器应该是CategoryEditController,它可以创建(新)和更新。这可以采用需要使用resolve
更新的类别。