【问题标题】:Switching Between href and ui-sref在 href 和 ui-sref 之间切换
【发布时间】:2016-11-23 05:03:31
【问题描述】:

目前我有一个从新闻控制器填充的页面。

news.html

<div class="col-md-4" ng-repeat="article in newsController.news">
<a title="Click to view" href="{{article.location}}" target="_blank">
    <div class="eventHolder">
        <h1>{{article.title}}</h1>
        <hr />
        <p>{{article.description}}</p>
        <p class="date">{{article.date}}</p>
    </div>
</a>
</div>

news.controller.js 的格式

var newsPage = angular.module('myApp');
    newspage.controller etc etc...

    ...
    self.news = [
        title:
        description:
        date:
        location: "img/blabla.pdf"

因此,如果位置是 pdf,那就没问题了。问题是我需要一些页面是实际的 html 页面,所以他们需要使用 ui-sref 而不是 href。我正在考虑向页面添加另一个属性,例如 page: true 并在 html 中添加 ng-click 以检查它是否是 pdf(或页面)。这将决定是使用ui-sref 还是href

我不确定如何将ui-sref/href 参数从控制器“发送”到 html。或者,如果我什至正确地做到了这一点。如果有任何不清楚的地方,请道歉。

更新/澄清

它必须使用 ui-sref 的原因是该页面由 $state 提供程序管理,该提供程序还为其提供 css 信息。 (页面上没有它的样式表)。

【问题讨论】:

  • 我认为您可以简单地使用href 将链接指向另一个州的URL。当然你也需要在 URL 的开头加上/#/
  • 一些页面使用$state.provider,这给了它一些功能,也给了它css。

标签: javascript jquery html angularjs


【解决方案1】:

您可以像这样在news 中添加一个字段:

self.news = [{
  ...
  isPage: true,
  ...
}]

那么在HTML中,你可以使用ng-if来决定使用href还是ui-sref

<a ng-if="article.isPage" ui-sref="{{article.location}}">
  ...
</a>
<a ng-if="!article.isPage" href="{{article.location}}">
  ...
</a>

【讨论】:

  • 我认为这就是我正在寻找的,但有没有办法在一个标签中做到这一点?如果我在每个 &lt;a&gt; 中指定它,这对我来说有点没用。
  • 好吧,你总是可以为此创建一个指令。或者,如果news 对象是一个数组,您可以始终使用ng-repeat
  • 这很好用。起初我很困惑,因为当我已经 ng-repeat 时,我以为您正在添加多个 标签。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多