Angularjs 在angular.ui-router中使用多个状态和单个控制器
我正在学习angularJS并创建一个使用ui路由器的web应用程序 我对国家的定义如下:Angularjs 在angular.ui-router中使用多个状态和单个控制器,angularjs,Angularjs,我正在学习angularJS并创建一个使用ui路由器的web应用程序 我对国家的定义如下: angular.module('test', []) .config(function($stateProvider){ $stateProvider. state('root',{ url: '/', abstract:true, templateUrl: '/root.html', control
angular.module('test', [])
.config(function($stateProvider){
$stateProvider.
state('root',{
url: '/',
abstract:true,
templateUrl: '/root.html',
controller: 'MyController'
})
.state('root.route1',{
url: '/route1',
parent: 'root',
views:{
'':{
templateUrl: '/route1.html'
}
'estimatedCost@':{
templateUrl: '/esitmatedCost.html'
}
}
})
.state('root.route2',{
url: '/route2',
parent: 'root',
views:{
'':{
templateUrl: '/route2.html'
}
'estimatedCost@':{
templateUrl: '/esitmatedCost.html'
}
}
})
});
在route1和route2之间来回导航时,我想共享MyController中的范围变量。当我从route1导航到route2时,它失去了scope变量的值
我不确定我做错了什么
有人能帮我吗?
提前感谢。我还没有使用过ui路由器,但在过去的几年中,我一直在使用AngularJS,这就是该语言过去的工作方式
控制器的主要目的是控制单个模板上的数据。这些控制器可以通过AngularJS工厂(通常称为服务)相互通信。在您的情况下,您可能希望使用服务,因为成功的路由更改会破坏控制器
角度模块('test',[])
.factory('myFactory',function(){
var info=“你好世界”;
返回{
信息:信息
};
})
.controller('CtrlOne',函数($scope,myFactory){
$scope.info=myFactory.info;
})
.controller('CtrlTwo',函数($scope,myFactory){
$scope.info=myFacotry.info;
});
然后,您可以在两个不同视图上使用这两个控制器,它们共享连接它们的服务中的变量。使用$stateParams在两个状态之间传递参数。 暂停以下步骤:
.state('route.route1', {
url: 'your url name',
params: {
nameOfParamObj: null
},
controller: 'your controller',
templateUrl: 'your template url',
})
$stateParams.yourParamObjectName
查看官方ui路由器文档。除了名称之外,您的路由都是相同的,这是故意的吗?除了让两条不同的路由映射到同一
url
可能没有什么用处之外,这有什么意义?为什么您需要两个外观完全相同、使用相同数据且具有相同控制器的不同页面?使用factory与数据库通信,使用service促进应用程序内部通信,如果在服务概念中,您需要在配置时完成一些任务-使用provider。控制器通常仅用于与视图交互。对不起,路由不同。@imsheth我可以在工厂中使用$state吗?在我的例子中,在我从route1状态收到报价后,我需要转到新的状态route2以接收另一个带有更新值的报价。