如下所示,即使我使用相同的控制器,我也希望在2 html之间共享范围。
是否可以在routeProvider中配置它?
.when('/cform', {
templateUrl: '/partials/clientForm.html',
controller: 'ClientCtrl', //Same Controller
})
.when('/vwClientManagement', {
templateUrl: '/partials/clientManagement.html',
controller: 'ClientCtrl' //Same Controller
})
$scope.showClientAddUpdateView = function(action,clientId) {
$scope.client.name="Hello World"; // This is getting displayed in UI.
$http.get("/qCli", { params:{id : clientId}}).then(
function successCallback(response){
//$scope.client = response.data;
$scope.client.name="Hello World After Ajax"; // This is not getting displayed in UI.
$location.path('/cform');
},function errorCallback(response){
console.log("err searching clients");
}
);
};
更新: Scanario 1 - 在ajax成功回调中更改路由和设置范围,仅丢失我在路由更改后成功回调中设置的值
Scanario 2 - 更新ajax成功回调中的范围,但不更改路径,使用正确的值更新视图。
添加了更多详情More Details
答案 0 :(得分:1)
在我看来,最好使用Service,在Angular控制器之间共享数据。通常,angularjs非常灵活,至少有几种方法可以解决您的问题:使用服务,使用$state.go
服务,使用stateparams,使用rootscope ...
检查此问题,有许多相关且有用的建议:Share data between AngularJS controllers
答案 1 :(得分:0)
使用时:
.when('/cform', {
templateUrl: '/partials/clientForm.html',
controller: 'ClientCtrl', //Same Controller
}).when('/vwClientManagement', {
templateUrl: '/partials/clientManagement.html',
controller: 'ClientCtrl' //Same Controller
})
您不使用一个唯一控制器。您正在为每个视图创建ClientCtrl
的实例。
所以他们没有共享范围,每个范围都有不同且独立的范围。
您似乎正在尝试避免使用服务,而在这种情况下最好这样做。 Stack Overflow上有几个(1,2)答案处理这个主题。