两个angularjs工厂,数据相同

两个angularjs工厂,数据相同,angularjs,factory,Angularjs,Factory,我有两个js文件,我需要检索一个特定的数据(用于比较),因此我使用一个工厂来执行此操作: factory : app.factory('DistantFactory', function($http, $q) { var factoryD = { distant : false, getDistant : function() { var deferred = $q.defer(); $http({meth

我有两个js文件,我需要检索一个特定的数据(用于比较),因此我使用一个工厂来执行此操作:

factory :
app.factory('DistantFactory', function($http, $q) {

    var factoryD = {
        distant : false,
        getDistant : function() {
            var deferred = $q.defer();
            $http({method: 'GET', url: urlDataDistant, cache: false, timeout: 1500}).
                success(function(data, status) {

                    var dataD = paramsField.params[0].data.date;

                    /* define data */
                    factoryD.distant = dataD;
                    deferred.resolve(factoryD.distant);


                }).error(function(data, statuts) {
                    deferred.reject('ERROR');
                });
            return deferred.promise;
        }
    }

    // return
    return factoryD;
});






app.factory('LocalFactory', function($http, $q) {

    var factory = {
        local : false,
        getLocal : function() {
            var deferred = $q.defer();
            $http({method: 'GET', url: urlDataLocalIntern, cache: false, timeout: 1500}).
                success(function(data, status) {

                    var dataL = paramsField.params[0].data.date;

                    /* define data */
                    factory.local = dataL;
                    deferred.resolve(factory.local);

                }).error(function(data, statuts) {
                    deferred.reject('ERROR');
                });
            return deferred.promise;
        }
    }

    // return
    return factory;
});
在控制器中:

                $scope.dataD = DistantFactory.getDistant().then(function(distant) {

                    $scope.dataD = distant;
                    $scope.dataL = LocalFactory.getLocal().then(function(local) {
                        $scope.dataL = local;

                        var dataD = distant;
                        var dataL = local;

(...)

dataD有一个问题:它的值与dataL相同。在文件中,没有相同的值,所以,有什么问题吗?

您的数据有问题。我已经在Plunker()中清理并重新创建了你的应用程序,正如你所看到的,它可以很好地处理我使用的假数据

如果没有更多关于实际数据的信息,我们将无法帮助您


更新

您正在获取.js文件,但没有对其进行评估(不确定如何查看这些值,因为它必须抛出一个错误)。这就是那些文件中的变量在脚本中不可用的原因。一种方法,但我不推荐它是
eval()
返回的数据,但它非常危险(安全方面)!请参见此处的示例:


我的建议是返回JSON$http将自动识别它,并且您的对象将作为
data.params[0].data.date
可用。请参见此处:

根据您的问题,我认为您需要分离两个控制器?看起来它们都挤在一起了,但是如何比较这两个数据并将其发送到视图(真/假结果)?
distance==local
?为什么要给dataD和dataL赋值3次?这是一个测试,我不知道值是否相同,我的代码是一个测试。你可以在jsfiddle或plunker中创建它,每个都有一组最小的数据,这样我们就可以很容易地看到什么不起作用了。我更新了代码:当我运行我的应用程序时,它会显示一个旧值。检查距离文件,值不一样,所以我不明白…控制台中的结果:“2014-05-07/2014-05-07”检查距离文件,不是值…你是怎么得到的?我收到一个错误:
未定义paramsField
。。。这非常有意义,因为您没有执行js代码。。。我会更新我的答案并告诉你原因。