如何在两个具有不同数据的div中提供相同的范围?

时间:2017-02-16 16:14:28

标签: javascript jquery html css angularjs

$rootScope.getPricesData = function (typ) {
        var data = {
            type: typ
        }
        $http({
            url: '...',
            method: 'POST',
            data: data
        }).then(function (res) {
            $rootScope.pricesData = res.data;
            console.log(res);
        })
    }

它的作品很好,并且html

<div ng-init="getPricesData('template')">info template</div>
<div ng-init="getPricesData('subscription_month')">info subscription_month</div>

我在控制台中看到这两个div有关订阅(不是模板和订阅)的信息,我正确地看到了这个数据,并且该函数被调用了两次(用于模板和订阅)。

我认为范围覆盖(但我不知道如何解决) 请求帮助

2 个答案:

答案 0 :(得分:1)

  • 您可以使用Javascript ternary operator来处理方案

    $rootScope.getPricesData = function (typ) {
        var data = {
            type: typ
        }
        $http({
            url: '...',
            method: 'POST',
            data: data
        }).then(function (res) {
            if(typ == 'template') ? $scope.templatePricesData = res.data : $scope.subscriptionPricesData = res.data;
        })
    }
    
  • 您可以创建一个空对象,然后在成功响应时将响应数据分配到对象的相应属性中。

    $scope.resData = {};
    $rootScope.getPricesData = function (typ) {
        var data = {
            type: typ
        }
        $http({
            url: '...',
            method: 'POST',
            data: data
        }).then(function (res) {
            $scope.resData[typ] = res.data;
        })
    }
    

答案 1 :(得分:0)

我认为这总会覆盖。一种可能的解决方案是让你的$ rootScope成为对象,这样就可以像 $ rootScope.pricesData [typ]