我正在使用mean.js堆栈处理项目。我需要创建一个可以在其他模块中使用的函数。我一直在阅读,我发现的是我必须将功能作为一项服务。这就是我的服务getSchoolByUser()
的方式:
angular.module('schools').factory('Schools', ['$resource',
function($resource) {
return $resource('api/schools/:schoolId', {
schoolId: '@id'
}, {
update: {
method: 'PUT'
},
getSchoolByUser: {
url: 'api/schoolByUser/:schoolPrincipalId',
params: {
schoolPrincipalId: 'schoolPrincipalId'
},
isArray: false
}
});
}
]);
这个函数我每次创建新目录时都会使用它。这是我在CourseController上如何使用它来创建新课程的示例:
angular.module('courses')
.controller('CoursesController', ['$scope',
'$stateParams',
'$location', 'Authentication',
'Courses','Schools',
function($scope, $stateParams, $location, Authentication, Courses, Schools) {
$scope.authentication = Authentication;
// Create new course
$scope.create = function(isValid) {
$scope.error = null;
if (!isValid) {
$scope.$broadcast('show-errors-check-validity', 'courseForm');
return false;
}
var course = new Courses($scope.course);
$scope.school = Schools.getSchoolByUser({schoolPrincipalId: $scope.authentication.user.id
}, function () {
course.SchoolId = $scope.school.id;
console.log(course);
course.$save(function(response) {
//some code here
}, function(errorResponse) {
$scope.error = errorResponse.data.message;
});
});
};
}
]);
有没有办法可以在函数内部以同步的方式进行此操作,因此我可以将其直接分配给范围,然后继续保存,如下所示:
course.SchoolId = getSchoolByUser();
course.$save(function(response) {
答案 0 :(得分:0)
您可以使用$ j service of angularjs(https://docs.angularjs.org/api/ng/service/ $ q)来实现这一目标。