javascript - angularjs mysql




AngularJS: خدمة مصنع HTTP $ (2)

أحاول أن أفهم مفهوم المصنع والخدمة في الزاوي. لدي الكود التالي تحت وحدة التحكم

init();

    function init(){
        $http.post('/services', { 
            type : 'getSource',
            ID    : 'TP001'
        }).
        success(function(data, status) {
            updateData(data);
        }).
        error(function(data, status) {

        });

        console.log(contentVariable);
    };
    function updateData(data){
        console.log(data);
    };

هذا الرمز يعمل بشكل جيد. ولكن عندما أقوم بنقل خدمة http http إلى المصنع ، فأنا غير قادر على إرجاع البيانات إلى وحدة التحكم.

studentApp.factory('studentSessionFactory', function($http){
    var factory = {};
    factory.getSessions = function(){
        $http.post('/services', { 
            type : 'getSource',
            ID    : 'TP001'
        }).
        success(function(data, status) {
            return data;
        }).
        error(function(data, status) {

        });
    };
    return factory;
});

studentApp.controller('studentMenu',function($scope, studentSessionFactory){
    $scope.variableName = [];
    init();
    function init(){
        $scope.variableName = studentSessionFactory.getSessions();
        console.log($scope.variableName);
    };
});

هل هناك أي ميزة لاستخدام المصنع ، حيث يعمل $ http حتى تحت وحدة التحكم


الإجابة الأولى رائعة ولكن ربما يمكنك فهم هذا:

studentApp.factory('studentSessionFactory', function($http){
    var factory = {};

    factory.getSessions = function(){
        return $http.post('/services', {type :'getSource',ID :'TP001'});
    };

    return factory;
});

ثم:

studentApp.controller('studentMenu',function($scope, studentSessionFactory){
      $scope.variableName = [];

      init();

      function init(){
          studentSessionFactory.getSessions().success(function(data, status){
              $scope.variableName = data;
          });
          console.log($scope.variableName);
     };
 });

الغرض من نقل خدمة studentSessions الخاصة بك خارج وحدة التحكم هو تحقيق الفصل بين الاهتمامات. تتمثل مهمة خدمتك في معرفة كيفية التحدث مع الخادم ، وتتمثل مهمة وحدة التحكم في الترجمة بين عرض البيانات وبيانات الخادم.

لكنك تربك معالجاتك غير المتزامنة وما يعيد ما. لا تزال وحدة التحكم بحاجة إلى إخبار الخدمة بما يجب القيام به عند استلام البيانات لاحقًا ...

studentApp.factory('studentSession', function($http){
    return {
        getSessions: function() {
            return $http.post('/services', { 
                type : 'getSource',
                ID    : 'TP001'
            });
        }
    };
});

studentApp.controller('studentMenu',function($scope, studentSession){
    $scope.variableName = [];

    var handleSuccess = function(data, status) {
        $scope.variableName = data;
        console.log($scope.variableName);
    };

    studentSession.getSessions().success(handleSuccess);
});






angularjs