0
这是我的路由代码:如何在angular.js中访问路由控制器表单main到嵌套控制器?
$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
函数内向服务器发送请求以从服务器获取数据。我收到了回复,并显示了所有正常工作的数据。但是当我每次向服务器发送请求时点击该按钮。因此,我不打算在第一次点击时将所有数据保留在数组中。我已经尝试了使用上面的代码,但是当我第一次点击时数组是空的,所以它将数据推入数组,但是当我再次单击时,它没有显示任何内容。这意味着我没有得到任何警报。我究竟做错了什么?
感谢它们之间使用的控制器使用cacheFactory
然后你可以访问缓存中的其他控制器你的快速回复...我已经尝试了你的代码....当我点击第一次它是如果条件进入,但当我点击第二次我没有得到任何警报....请参阅我的上述代码.. .i使用了你的$ cacheFactory概念,而不是数组概念 – silvesterprabu
@silvesterprabu,以及如果你没有得到任何警报,那么你你的Bookctrl甚至没有执行 –
好的...但是当我第一次点击它被执行,第二次也执行,但它不检查,如果语句因为我已经把一个警报之前,如果声明..... – silvesterprabu