我正在从ng-view迁移到ui-view。AngularJS:ui-router用新内容重定向成功刷新范围
在我的控制器中,一旦成功创建/更新/删除,我想用新更新/创建/删除的数据重定向到索引视图。
我目前使用$state.go
来做这个。
app.controller('AdminSupplierCreateController', ['$scope', '$state', 'Supplier',
function ($scope, $state, Supplier) {
$scope.h1 = "Register a new Supplier";
$scope.store = function()
{
Supplier.post($scope.supplier)
.then(
function() {
console.log("Successfully Created Supplier");
$state.go('admin.supplier');
},
function(response) {
console.log("Error with status code: " + response.status);
}
);
};
}]);
问题是当$状态改变时,范围没有更新。看起来好像原始的admin.supplier
范围数据没有被刷新。
在将范围设置为AdminSupplierIndexController
之前,我已尝试使用$state.reload()
更新ui-view
。
app.controller('AdminSupplierIndexController', ['$scope', '$state', 'suppliers',
function ($scope, $state, suppliers) {
$state.reload();
$scope.suppliers = suppliers;
}]);
这样做可以使GET请求来api/v1/suppliers
,但它实际上并没有显示更新的范围,除非我要么打在浏览器的刷新按钮或手动导航到不同的状态,然后再导航回。
$stateProvider
...
.state('admin.supplier', {
url : "/supplier",
templateUrl : 'templates/admin/supplier/index.html',
controller: "AdminSupplierIndexController",
resolve: {
suppliers: ['Supplier', function(Supplier) {
return Supplier.getList();
}]
}
})
.state('admin.supplier.create', {
url : "/create",
templateUrl : 'templates/admin/supplier/create.html',
controller: "AdminSupplierCreateController"
})
解决方案:
app.controller('AdminSupplierCreateController', ['$scope', '$state', 'Supplier',
function ($scope, $state, Supplier) {
$scope.h1 = "Register a new Supplier";
$scope.store = function() {
Supplier.post($scope.supplier)
.then(
function() {
console.log("Successfully Created Supplier");
// Force Reload on changing state
$state.go('admin.supplier', {}, {reload: true});
},
function(response) {
console.log("Error with status code: ", response.status);
}
);
};
}]);
非常感谢。这已经解决了:'$ state.go('admin.supplier',{},{reload:true});'在'Supplier.post'的成功回调中' – Gravy
这真的有所帮助,并且正如我期待的那样工作至。 – carbontwelve