我有包含大量数据的大型表格,所以我希望每个标签都带有大量数据的标签。
我希望在单击标签标题时可以延迟加载标签内容,然后在以后再次选择时不需要再次重新加载。
我认为这个示例符合我想要的方向: [ngular-ui选项卡在tab-content中加载模板
但这似乎加载了一个静态模板:
<tabs> <pane active="pane.active" heading="{{pane.title}}" ng-repeat="pane in panes"> <div ng-include="pane.content"></div> </pane> </tabs>
如何使用$ http.get()动态加载窗格的内容?注意:这已经是通过ng-view路由加载的页面,因此我无法进行嵌套路由。
编辑:每个选项卡的内容都非常不同,因此理想情况下,我将为每个选项卡或类似的功能提供一个功能和模板…
我想angular-ui是解决这个问题的好方法?
很好奇自己如何通过ajax加载选项卡。这是我制定的一个小演示。
选项卡具有select在被选择时触发的属性。所以我使用以下选项卡:
select
<tab heading="{{tabs[0].title}}" select="getContent(0)"> <div ng-hide="!tabs[0].isLoaded"> <h1>Content 1</h1> <div ng-repeat="item in tabs[0].content"> {{item}} </div> </div> <div ng-hide="tabs[0].isLoaded"><h3>Loading...</h3></div> </tab>
控制器:
$scope.tabs = [ { title:"AJAX Tab 1", content:[] , isLoaded:false , active:true}, { title:"Another AJAX tab", content:[] , isLoaded:false } ]; $scope.getContent=function(tabIndex){ /* see if we have data already */ if($scope.tabs[tabIndex].isLoaded){ return } /* or make request for data , delayed to show Loading... vs cache */ $timeout(function(){ var jsonFile='data'+(tabIndex +1)+'.json' $http.get(jsonFile).then(function(res){ $scope.tabs[tabIndex].content=res.data; $scope.tabs[tabIndex].isLoaded=true; }); }, 2000) }
会将缓存移至服务,因此,如果用户切换视图并返回,则数据仍将位于服务缓存中
**[DEMO](http://plnkr.co/edit/g8nIqe37HEjvNOQz5z0p?p=preview)**