Angularjs $scope.ons.navigator.pushPage在init方法中不起作用
我关注app.js中的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"));
$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>