繁体   English   中英

从AngularJS中的控制器调用Service函数

[英]Calling a Service function from a Controller in AngularJS

控制器代码

'use strict';

angular.module('MyApp').controller('ArticleContribEmailController', [

    '$scope', 'ArticleAppState', 'fbsUserDataService', 'contribEmailService',
    function ($scope, ArticleAppState, fbsUserDataService, contribEmailService ) {

        this.userChanged = function () {

            if (fbsUserDataService.initialized && fbsUserDataService.user && ArticleAppState.page_data) {

                // user has authenticated.
                contribEmailService.initForm();

            }

        };


        // watch for when user data is available, run userChanged.
        $scope.$watch(function() { return fbsUserDataService.user; }, this.userChanged);
        $scope.$watch(function() { return fbsUserDataService.initialized; }, this.userChanged);
    }
]);

服务编号

'use strict';

angular.module('forbesArticleApp').service('contribEmailService', [

    '$injector', '$route', 'ArticleAppState', 'fbsUserFormFactory', 'fbsUserDataService',

    function initForm ($injector, $route, ArticleAppState, fbsUserFormFactory, fbsUserDataService) {

        console.log("Hello world!");

    }

]);

我只想从控制器中的调用中触发contribEmailService.initForm()函数,但是在页面加载后立即触发。

调用服务函数initForm()时如何设置?

这是更正的服务代码:

'use strict';

angular.module('forbesArticleApp').service('contribEmailService', [
    '$injector', '$route', 'ArticleAppState', 'fbsUserFormFactory', 'fbsUserDataService',

function($injector, $route, ArticleAppState, fbsUserFormFactory, fbsUserDataService) {
    return {
      initForm: function() {
        console.log("Hello world!");
      }
    };
]);

服务功能是一家工厂,它将依次返回实际服务。 因此它将在第一次作为依赖项被请求时运行。 实际上,您在函数中尚未undefined contribEmailService编写方式,因为工厂实际上并未返回任何内容。

希望这可以帮助!

controller:-
blogcontroller is controller name

app.controller('blogController', function($scope, $compile,  $http, blogAuth, AppInfo, $location,$element){

$scope.blog_abuse = function(blog_id)
    {

        blogAuth.BlogAbuse(blog_id).then(function(response)
        { 
            $scope.DetailblogList.is_abused = response.records.is_abused;
        },function(error){
        });
    }
});


service:-

app.factory('AppInfo', function(){
    return {
        serviceURL:site_url
    };
});

app.service('blogAuth', function($http, $rootScope, $q, AppInfo){

this.BlogAbuse = function(blog_id){
    var deferred = $q.defer();
    var pageObj ={"blog_id":blog_id};   

        $http.post(AppInfo.serviceURL+'blog/blog_abuse',pageObj).success(function(data){
            deferred.resolve(data);
        }).error(function(msg, code) {        
            console.log('error', code, msg );
        });
        return deferred.promise;
    }

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM