Javascript 如何访问angular.js中从main到嵌套控制器的路由控制器?
这是我的路线代码:Javascript 如何访问angular.js中从main到嵌套控制器的路由控制器?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,这是我的路线代码: $routeProvider .when('/', 'main') .when('/books','main.book') .segment('main', { templateUrl:'templates/main.html', controller:MainCtrl}) .within() .segment('book', { templateUrl:'template
$routeProvider
.when('/', 'main')
.when('/books','main.book')
.segment('main', {
templateUrl:'templates/main.html',
controller:MainCtrl})
.within()
.segment('book', {
templateUrl:'templates/book.html',
controller:BookCtrl
})
以下是控制器:
function Mainctrl()
{
},
function Bookctrl($http,$cacheFactory)
{
var bookCache = $cacheFactory('Books');
var book = bookCache.get("BookName");
if(!book){
alert("first time");
var data=[{"name":"1"},{"name":"2"},{"name":"3"}];
bookCache.put("BookName",data);
} else {
alert("second time");
alert(book);
}
}
首先,我正在加载
main.html
页面。它有一个嵌套视图和一个按钮(书本)。当用户单击该按钮时,我只是将book.html
加载到该嵌套视图中,然后在BookCtrl
函数中,我向服务器发送请求以从服务器获取数据。我得到一个响应,我已经显示了所有工作正常的数据。但当我每次向服务器发送请求时都单击该按钮时。因此,我计划在第一次单击时将所有数据保存在一个数组中。我已经尝试使用上述代码,但是当我第一次单击时,数组是空的,因此它正在将数据推入数组,但当我再次单击时,它没有显示任何内容。这意味着我没有得到任何警告。我做错了什么?如果您询问如何缓存项目并在控制器之间使用它们,请使用
然后,您可以通过获取缓存对象来访问其他控制器中的缓存
function Mainctrl() {
//Will be undefined if it hasnt been created yet.
var bookCache = $cacheFactory.get('Books');
}
感谢您的快速回复…我已经尝试了您的代码…当我第一次单击时,它将进入if状态,但当我第二次单击时,我没有收到任何警报…请查看我的上述代码…我使用了您的$cacheFactory概念,而不是数组concept@silvesterprabu,如果你没有收到任何警报,那么你的Bookctrl甚至没有被执行好…但是当我第一次点击它时,第二次也执行了,但它没有检查if语句,因为我已经在if语句之前发出了一个警报……编辑您的问题,以显示您是如何实现cacheFactory的。我使用数组作为值,而不是向服务器发送请求
function Mainctrl() {
//Will be undefined if it hasnt been created yet.
var bookCache = $cacheFactory.get('Books');
}