簡體   English   中英

在控制器angularJS中注入工廠

[英]injecting factory in controller angularJS

我在angularJS工廠和控制器中遇到問題我想在工廠中獲得http答復並在控制器中使用api答復,但我不知道如何處理工廠並將其注入控制器中

.controller('PlaylistsCtrl', function ($scope, $http) {
$http({ method: 'GET', url: "https://www.googleapis.com/blogger/v3/blogs/1309320265504420965/posts?key=***************" }).
  success(function (data, status, headers, config) {
      // this callback will be called asynchronously
      // when the response is available
      for (var i =0; i < data.items.length;i++)
      {

        var m,
        urls = [], 
        str = data.items[i].content,
        rex = /(https?:\/\/.*\.(?:png|jpg))/g;

        while ( m = rex.exec( str ) ) {
          urls.push( m[1] );
          data.items[i].ImageURL = urls[0];
          } 
          //data.items[i].ImageURL = urls[0];
      }
      $scope.playlists = data.items;
  }).
  error(function (data, status, headers, config) {
      // called asynchronously if an error occurs
      // or \\server returns response with an error status.
  });
})

我不確定您要尋找什么,但是您始終可以通過返回http調用來返回承諾。 然后在控制器中獲取該承諾並對其進行處理:

例如:apiService.js

(function(app) {
    "use strict";

    app.factory("apiService", ["$http", function($http) {
        var get = function(url, config) {
            return $http.get(url, config);
        };

        var post = function(url, data, config) {
            return $http.post(url, data, config);
        };

        var put = function(url, data, config) {
            return $http.put(url, data, config);
        };

        var remove = function(url, config) {
            return $http.delete(url, config);
        };

        return {
            get: get,
            post: post,
            put: put,
            remove: remove
        };
    }]);
})(_app);

並在您的控制器中注入服務:

(function(app) {
    "use strict";

    app.controller("MyCtrl", ["$scope", "apiService", function($scope, apiService) {

            $scope.getData = function() {
                apiService.get("/server/data").success(function(data) {
                    console.log(data);
                }).error(function(err) {
                    console.log(err);
                });
            };
        }
    ]);
})(_app);

可選的(app.js):

var _app = _app || {};

(function() {

    "use strict";

    _app = angular.module("myApp", []);
})();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM