Javascript 如何在AngularJS中重用url和条件语句访问内容
在我的应用程序中,我有一个幻灯片盒风格的界面。在其中一张幻灯片中,我想有条件地展示某个东西(即Javascript 如何在AngularJS中重用url和条件语句访问内容,javascript,angularjs,Javascript,Angularjs,在我的应用程序中,我有一个幻灯片盒风格的界面。在其中一张幻灯片中,我想有条件地展示某个东西(即if Meteor.user().profile.asdf)。我想通过主页上的链接通过导航显示完全相同的页面(如果您位于URL/item/123)。如何在不复制所有代码的情况下执行此操作?更具体地说,在我的路由器中,我有: .state('item', { url: '/item/:itemId', templateUrl: 'client/templates/itemView.html',
if Meteor.user().profile.asdf
)。我想通过主页上的链接通过导航显示完全相同的页面(如果您位于URL/item/123
)。如何在不复制所有代码的情况下执行此操作?更具体地说,在我的路由器中,我有:
.state('item', {
url: '/item/:itemId',
templateUrl: 'client/templates/itemView.html',
controller: 'itemViewCtrl as item',
resolve : {
liftId : ['$stateParams', function($stateParams){
// console.log($stateParams.liftId);
return $stateParams.liftId;
}]
}
})
在通过URL访问的页面上,我通过item.helper.where访问数据。是否有快捷方式将此页面作为
或其他内容包含在主页中?如果两个组件的模板URL
相同,则Angular应自动执行此操作。Angular使用$templateCache
当angular开始获取URL时,它将首先检查$templateCache
,并将意识到模板来自同一个位置,不会再次获取静态内容。相反,它将使用存储在$templateCache
您可以通过查看开发人员工具中的网络流量来验证这一点。只应发送一个对该url的请求 如果不是,或者您希望确保使用的是相同的模板,另一种方法是使用手动将模板添加到缓存中
$templateCache.put('templateId.html','这是模板的内容')代码>
然后,您将使用模板而不是模板URL
作为您的状态
,因此我认为它不起作用,因为访问年龄的第一种方法是通过索引/itemView/123
,而另一种方法只是通过索引
。当它通过index/itemView/123
时,它会从$stateParams
中截取ID,并使用该ID动态加载数据。另一方面,没有$stateParams
,因此它不知道要加载到模板中的数据。