requirejs 및 각도를 사용하고 있습니다. 지금 우리는 서로 다른 모듈간에 하나의 공장을 공유하려고 노력하고 일을 할 수 없습니다.요구 사항, 각도, 모듈 간 공장 공유
컨트롤러/우리 앱에서 http 서비스에 어떻게 액세스 할 수 있습니까?
우리는 우리의 서비스 파일 requirejs 방법 (작은 추출물)를 포함 :
우리는 우리가 우리의 의존합니다 (HttpService를) 주입 자바 스크립트 파일 우리의 응용 프로그램이 그 외에도requirejs.config({
paths: {
httpServices: 'apps/services/Http'
}
});
:
define(['angularAMD', "httpServices", 'ngRoute', 'underscore'], function (angularAMD, httpServices) {
var app = angular.module("clientapp", ['ngRoute']);
var scripts = document.getElementsByTagName("script");
var myScript = _.find(scripts, function (s) {
return s.src.substr(s.src.lastIndexOf('/') + 1, s.src.length) === 'index.js';
});
var url = myScript.src.replace("index.js", "") + "partials/";
app.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: url + "dashboard.html"
})
.when('/basicdata/index/', {
templateUrl: url + "basicdata/index.html"
})
});
return angularAMD.bootstrap(app);
});
을
마지막으로 서비스 자체 :
define(['angular'], function (angular) {
'use strict';
/* Root herausfinden */
var root = window.location.pathname.split("/")[1];
var httpServices = angular.module('httpServices', []);
httpServices.factory('sharedApplication', ['$rootScope', '$http', function ($rootScope, $http) {
var sharedApp;
sharedApp = {};
sharedApp.currentView = "home-section";
sharedApp.pastEvents = null;
$http.get("/" + root + "/api/search/md:ProductManager/").success(function (response) {
return sharedApp.pastEvents = response.data;
});
return sharedApp;
}]);
return httpServices;
});
우리의 문제는 우리가 단순히 ge $ get-call의 데이터에 액세스합니다.
Object {_invokeQueue: Array[1], _runBlocks: Array[0], requires: Array[0], name: "httpServices", provider: function…}
우리는 무언가가 우리의 아약스 통화의 타이밍 또는 우리가 서비스를 사용하는 방식에 문제가 있음을 추측 : 우리는 항상이처럼 보이는 개체를 얻을.
이미 개체에 대한 포인터 sharedApp 아닌가? 그래서 sharedApp.pastEvents = null을 변경; ~ sharedApp.pastEvents = {}; 아무것도 안해? – mahulst
아니, 나는 그렇게 생각하지 않는다. 내가 회선을 변경하기 전까지는 응답 데이터를 가리 키지 않았습니다. Javascript의 포인터에 익숙하지 않습니다. 어쩌면 내가 틀렸어. Btw. 이제 "$ http.get 객체"자체를 반환하도록 코드를 변경했습니다. "then", "success", "error"등을 액세스 할 수 있기 때문에 이제는 ajax 호출에 쉽게 대응할 수 있습니다. –