Angular js - 找不到控制器中定义的范围数据

时间:2015-06-19 14:49:52

标签: angularjs angularjs-directive angularjs-scope

请告诉您如何在控制器中完成所有操作后调用视图页面。目前我正面临javascript中的问题,我正在分配一个变量,该变量将在从控制器调用服务之后出现,并且来自服务的数据将在一段时间后出现。

2 个答案:

答案 0 :(得分:0)

从这个控制器我想要获取地图 来自我的lat的信息很长一段时间后,但在视图页面我得到地图信息,但在几秒钟之后所以我在谷歌地图面临问题,因为我在视图页面中定义的变量未定义为秒的一小部分。我尝试通过在隐藏变量中设置值并获取数据但是脚本中定义的变量未定义。

frontApp.controller('mapController', function ($scope, $rootScope, services, $location, $window, $interval) {

    is_login(1);
    update();

    function update() {

        if (navigator.geolocation) {


            $window.navigator.geolocation.getCurrentPosition(function (position) {
                $scope.$apply(function () {

                    var latitude = position.coords.latitude;
                    var longitude = position.coords.longitude;


                    services.getMapData(latitude, longitude).then(function (data) {

                        $scope.mapdata = data.data;

                });
            });

        }
        else
        {
            window.location.href = site_url + "#/dashboard";
        }
    }

    $interval(update, 1000);
});

答案 1 :(得分:0)

我没有专家,所以我确信有经验的人会参与其中。我非常确定您需要正确初始化模块。您的示例似乎没有定义任何依赖项(即$ scope,$ location ...等)。

//you also need the app as well inorder to attach the controller to.

var frontApp = angular.module('mappingModule', []);

frontApp.controller('mapController',['$scope', '$rootscope','$location','$window', '$interval', function ($scope, $rootScope, services, $location, $window, $interval) {

// do things with your data here.
// i'm going to out on a limb and say you probably need to make sure you have a popup that 
// that prompts to user to share their location or navigator wont give it to you
}]);

此外,如果您希望模块运行,您需要链接到页面。需要更多的代码和设置来提供更好的答案。

您还需要定义服务。呃,我相信它被称为工厂,负责处理需要在控制器依赖项数组中的依赖项中引用的工厂。查看您的服务代码会有所帮助。

总的来说,听起来你并没有将位置数据传递给控制器​​。