从json为对象分配动态值

时间:2017-01-30 01:59:29

标签: angularjs json

我使用Pannellum构建了一个全景查看器,我将选项传递到默认配置中以生成如此的视图;

var panoOptionDefaults = {
            type: "equirectangular",
            haov: imageXRes,
            vaov :imageYRes,
            minPitch : 0,
            maxPitch : 0,
            minYaw : (imageYRes * 2) * -1,
            maxYaw : (imageYRes * 2),
            autoLoad : true,
            mouseZoom : false,
            showControls : false,
            hfov:imageXRes * 2, // Zoom - positive number zooms out / negative number zooms in 
            panorama: $scope.currentProfile.panorama.image, //value in json, returns error
            hotSpotDebug : false,
            hotSpots: [ // Dynamic Value
                {
                    "pitch": -9.0,
                    "yaw": -1.0,
                    "cssClass": "custom-hotspot",
                    "createTooltipFunc": hotspot,
                    "createTooltipArgs": "Radios for Communication"
                }
             ]
           }

我想要做的就是拥有“panaroma'来自我的response.data获取方法。我已经编写了一个有效的角度服务,它根据一个属性和一个get方法返回一个profile.json,该方法为这里有各个数据的每个指令返回这个json结果;

            $scope.currentProfile = {}; / /creates object
        profiles.getProfile().then(function(response){
            $scope.currentProfile = response.data; //returns data and assigns to $scope
        });

1 个答案:

答案 0 :(得分:0)

由于您的答案仍然缺少一些关键细节(比如何时使用panoOptionsDefault对象),因此确实有点难以确定,但我怀疑您的问题是由于JavaScript的异步特性造成的。 / p>

分配panorama的行上的注释表示“返回错误”,但您没有指定错误消息。我怀疑发生了错误,因为尚未分配$scope.currentProfile的值。如果是这样,您需要等到在使用panoOptionsDefault之前检索完该数据的AJAX调用。

所以你需要做这样的事情:

profiles.getProfile().then(function(response){
    $scope.currentProfile = response.data;
    // Now you can use panoOptionsDefault
    SomeCall(panoOptionsDefault);
});