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
,因此它不知道要加载到模板中的数据。