$state.go在单个控制器中不起作用
$state.go not working in single controller
everyone.我遇到了一个奇怪的问题...我的应用程序中有几个状态,除了一个控制器内部之外,它们似乎都可以工作。我已经发布了我尝试使用其函数的工厂,以及控制器、状态以及应该触发该函数的视图:
app.factory('handleShipping', ['$http', function($http){
var handleShipping = {};
handleShipping.validate = function(address){
return ($http.post('/shipping/validate',address).success(function(data){
console.log(JSON.stringify(data));
}));
}
return handleShipping;
}]);
。
app.controller('ValidateCtrl',['$scope','$state', 'handleShipping','shipperName', 'auth',function($scope, $state, handleShipping, shipperName,auth){
$scope.getShipper = function(shipName){
shipperName.shipper = shipName;
};
$scope.validateAddress = function(){
handleShipping.validate($scope.user).error(function(error){
$scope.error = error;console.log('Error!');
}).then(function(){
$state.go('label');
});
};
}]);
。
.state('address', {
url: '/address',
templateUrl: '/address.html',
controller: 'ValidateCtrl'
})
.state('label', {
url: '/label',
templateUrl: '/label.html',
controller: 'LabelCtrl'
});
。
<script type="text/ng-template" id="/address.html">
<div class="page-header">
<h1>Address, please</h1>
</div>
<div ng-show="error" class="alert alert-danger row">
<span>{{ error.message }}</span>
</div>
<form ng-submit="validateAddress()"
style="margin-top:30px;">
<div class="form-group">
<input type="text" class="form-control" placeholder="Street"
ng-model="user.street"></input>
</div>
<div class="form-group">
<input type="text"
class="form-control"
placeholder="City"
ng-model="user.city"></input>
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="State" ng-model="user.state"></input>
</div>
<div class="form-group">
<input type="text"
class="form-control"
placeholder="Zip Code"
ng-model="user.zipCode">
</input>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</script>
我没有收到错误消息。如果我输入本地主机:3000/标签,我可以看到视图。另外,我注意到一些奇怪的事情...如果我停留在"地址"视图上,然后按下"提交"按钮,则没有任何反应。但是如果我不理会页面,并且应用程序在终端上运行,它会在控制台中随机显示错误消息,而在终端上,我会看到
POST /shipping/validate - - ms - -
任何帮助将不胜感激。
工厂方法应返回一个承诺。目前你在服务中使用success
和error
回调,它不允许你在验证函数上链承诺。您必须在控制台中收到错误。 $state.go
不起作用,因为执行没有转到那行。
返回 promise 后,您需要在验证方法调用后使用 .then
来链接该承诺。
厂
handleShipping.validate = function(address){
return $http.post('/shipping/validate',address);
};
控制器
$scope.validateAddress = function(){
handleShipping.validate($scope.user).then(function(data){ //success
//$state.go('label');
}, function(error){ //error
$state.go('label');
})
};
相关文章:
- Angular JS“;控制器为“;语法不起作用
- 角度控制器服务承诺不起作用
- 控制器功能在 Angular.js 中不起作用
- 简单的AngularJS控制器不起作用
- Angular js指令使用控制器作为语法ng点击不起作用
- 控制器中的筛选列表没有'不起作用
- 对象分配在此angularjs控制器中不起作用
- 离子:$ionicPlatform.isIOS()在控制器方法中不起作用
- 离子控制器XMLHttpRequest函数不起作用
- PhoneGap:角度控制器不起作用
- Ember.js 控制器不起作用
- 通过控制器访问$rootScope不起作用
- 角度“这个”在指令控制器内不起作用
- 为什么当服务注入第二个控制器时,AngularJS 1.4.8 应用程序不起作用
- AngularJS简单控制器不起作用
- 条件在 AngularJS 控制器中不起作用
- 角度滤波器 - 带控制器作为语法不起作用
- Angular的ngResource对控制器不起作用
- Ajax 发布到 CodeIgniter 控制器不起作用
- $emit from子控制器工作,但是$broadcast from父控制器不起作用