【问题标题】:AngularJS bootstrap-ui tabs pulling in local html contentAngularJS bootstrap-ui 选项卡拉入本地 html 内容
【发布时间】:2015-01-19 22:24:26
【问题描述】:

我已经设置了一个简单的应用程序,现在我想拉入一个本地 html 文件作为每个选项卡的内容。我也只希望“苹果”内容显示在“苹果”选项卡下,梨也一样,让我的 html 尽可能简单,因为将来可以添加更多水果。

请查看我当前配置的插件: http://plnkr.co/edit/Y6Ey8vbvrq3xzvBhJS7o?p=preview

  <tab ng-repeat="tab in tabs" heading="{{tab.title}}" select="getContent($index)" active="tab.active" disabled="tab.disabled">
  <div ng-hide="!tabs.isLoaded">
  <h1>{{tab.title}}</h1>
    <div ng-repeat="item in tabs.content">
      <p>{{item[tab.title]}}</p>
    </div>
  </div>
  <div ng-hide="tabs.isLoaded"><h3>Loading...</h3></div>
  </tab>

我的问题是,您能帮我确定如何只为属于一个 html 文件的每个选项卡提取特定内容吗?

【问题讨论】:

  • 我没有在这里找到问题 -(
  • 对不起,彼得你是对的。我将更新为问题格式:)
  • 你想要 angular 1.0.8 & ui-bootstrap-tpls-0.6.0.js 的结果吗?为什么要使用旧版本?
  • 不抱歉,我使用的是 angular 1.3.8 和最新的 bootstrap-ui,这只是我 fork 的一个 plunker 遗留下来的。

标签: javascript html angularjs angular-ui-bootstrap


【解决方案1】:

这是ng-include 的完美用例。根据Documentation,它是fetches, compiles and includes an external HTML fragment.

像这样使用它:

Javascript

$scope.templates = [
  { URL: '/path/to/file.html' },
  { URL: '/path/to/file2.html'}
]

HTML

<div ng-repeat="template in templates">
  <div ng-include="template.URL">
    <!-- Template markup goes here -->
  </div>
</div>

就是这样。只需确保 file.html 和 file2.html 存在,您就可以将您的标记直接拖到每个对应的标记中。

【讨论】:

  • 这很好,但我真正想要的是使用一个 html 文件,但只显示相关部分。
  • 在这种情况下,ng-show 和 ng-hide 在您使用它们的方式上是完全可以接受的。或者,如果您有服务器访问权限并准备好学习更高级的主题,请查看有关路由和视图的本教程:viralpatel.net/blogs/…
【解决方案2】:

编辑:根据您对 Pangolin 的回答的评论:Plunker

JS

app.directive("fruit", function() {
    return {
        restrict: "E",
        templateUrl: "fruit.html"
    };
});

HTML

  <tab ng-repeat="tab in tabs" heading="{{tab.title}}" select="getContent($index)" active="tab.active" disabled="tab.disabled">
  <div ng-hide="!tabs.isLoaded">
    <fruit></fruit>
  </div>
  <div ng-hide="tabs.isLoaded"><h3>Loading...</h3></div>
  </tab>

fruit.html(精简版)

<div ng-show="tab.title=='Apple'">
<h2>Apple</h2>
<p>The apple tree....
</div>

<div ng-show="tab.title=='Pear'">
<h3>Pear</h3>
<p>The pear is 
</div>

【讨论】:

  • 这种方法似乎最适合我当前的需求。如果你想扩展它,假设现在有一个fruit.html 和veg.html,你会怎么做?
  • @ShannaBarnard 取决于你想做什么,但我想你至少会创建一个 veg 指令,然后你需要知道标签指的是什么(即水果或蔬菜),然后有一个 ng -显示:,对于例子。
猜你喜欢
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多