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');
}