Angularjs $scope.ons.navigator.pushPage在init方法中不起作用

Angularjs $scope.ons.navigator.pushPage在init方法中不起作用,angularjs,cordova,onsen-ui,Angularjs,Cordova,Onsen Ui,我关注app.js中的init函数 $scope.init = function () { if(localStorage.getItem("id")!=null && localStorage.getItem("pass")!=null) { alert(localStorage.getItem("id")+" "+localStorage.getItem("pass"));

我关注app.js中的init函数

$scope.init = function () 
        {
            if(localStorage.getItem("id")!=null && localStorage.getItem("pass")!=null)
            {
                alert(localStorage.getItem("id")+" "+localStorage.getItem("pass")); 
                var id=localStorage.getItem("id");
                var pass=localStorage.getItem("pass");              
                $http({method: 'GET', url: site+'/login-web.php?txt_email='+id+'&txt_password='+pass}).
                success(function(data, status, headers, config) 
                {
                    if(data=='error')
                        navigator.notification.alert("Wrong username or password.",null,"Attention.!","Try Again.!");
                    else
                    {
                        localStorage.setItem("id", id);
                        localStorage.setItem("pass", password);
                        alert("fire");
                        $scope.ons.navigator.pushPage('dashboard.html',{title : 'title'});
                    }

                }).
                error(function(data, status, headers, config) 
                {
                    alert("Please check Mobile Data.");
                    // called asynchronously if an error occurs
                    // or server returns response with an error status.
                });         
            }
        },
而我是来自世界各地的火

<body ng-controller="AppController" ng-init="init()">

没有重定向到dashborad。

使用
$scope.ons.navigator.pushPage('dashboard.html',{title:'title'})没有问题。但我认为在您的
标签中,没有使用该功能所需的
标签。此外,您需要在setTimeout内调用该函数,否则将在DOM元素完成渲染之前调用该函数。按以下步骤进行:

以下是您需要添加到您的控制器中的内容:

app.factory('DataService', function($http) {
    var service = {
        requestData: function(url) {
            return $http.get(url).then(function(data, status, headers, config) {
                service.myData = data;
                return service.myData;
            });
        },
        myData: null,
    return service;
});

app.controller('AppController', function($scope, DataService)){
    $scope.init = function(){ setTimeout($scope.init_wait, 10); };

    $scope.init_wait = function () {
        if(localStorage.getItem("id")!=null && localStorage.getItem("pass")!=null){
            alert(localStorage.getItem("id")+" "+localStorage.getItem("pass")); 
            var id=localStorage.getItem("id");
            var pass=localStorage.getItem("pass"); 
            var url = ite+'/login-web.php?txt_email='+id+'&txt_password='+pass;

            DataService.requestData(url).then(function(data, status, headers, config) {
                if(data=='error')
                    navigator.notification.alert("Wrong username or password.",null,"Attention.!","Try Again.!");
                else {
                    localStorage.setItem("id", id);
                    localStorage.setItem("pass", password);
                    alert("fire");
                    $scope.ons.navigator.pushPage('dashboard.html',{title : 'title'});
                }
            });      
        }
    }
};
在你的HTML里面

<body ng-controller="AppController" ng-init="init()">
  <ons-navigator>
    <!--Your HTML-->
  </ons-navigator>
</body>


谢谢您的回复。但调用了init()并成功地从localstorage获取了值,但页面并没有重定向到仪表板。html@PareshGami我认为这是因为http服务中的承诺。我建议您通过我在回答中更新的服务获取http数据。然后将其注入控制器。这次应该行得通。祝你好运,谢谢。您正在更改应用程序工厂,对吗?但是你能解释一下它是如何工作的吗。
<body ng-controller="AppController" ng-init="init()">
  <ons-navigator>
    <!--Your HTML-->
  </ons-navigator>
</body>