重用代码但使用自定义内容

时间:2013-09-16 21:53:54

标签: angularjs angularjs-directive angularjs-ng-include

我有一堆页面,其代码为页面底部的按钮和内容提供了一个漂亮的页脚区域:

<nav class="navbar navbar-default navbar-fixed-bottom" role="navigation">
    <div class="container">
        <div class="navbar-inner">
            <footer>
                <a class="btn btn-warning actionButton" href="#/">
                    <i class="glyphicon glyphicon-trash icon-white" />
                    Cancel
                </a>
                <a class="btn btn-primary actionButton" data-ng-click="saveSampleForm(sampleForm)" data-ng-disabled="form.$invalid">
                    <i class="glyphicon glyphicon-ok icon-white" />
                    Save
                </a>
                <div class="version">v{{applicationdata.Version}}</div>
            </footer>
        </div>
    </div>
</nav>

我知道nginclude标记,但有没有办法重用此代码的nav部分,但有自定义<footer>内容?按钮在页面之间变化。也许是一个指令?还在学习这些东西...... 编辑:我知道我可以将<footer>内容的代码添加到我的$ scope,然后使用{{footerContent}},但我更希望将html保留在我的模型之外。

1 个答案:

答案 0 :(得分:1)

你当然可以这样做。这是一个使用指令的transclusion的想法。

<强>指令

app.directive('navFooter', function() {
  return {
    templateUrl: 'nav.html',
    replace: true,
    transclude: true,
    restrict: 'E'
  }
})

<强> nav.html

<nav class="navbar navbar-default navbar-fixed-bottom" role="navigation">
    <div class="container">
        <div class="navbar-inner">
            <footer ng-transclude>
            </footer>
        </div>
    </div>
</nav>

<强>用法

<nav-footer>
  <a class="btn btn-warning actionButton" href="#/">
      <i class="glyphicon glyphicon-trash icon-white"></i>
      Cancel
  </a>
  <a class="btn btn-primary actionButton" data-ng-click="saveSampleForm(sampleForm)" data-ng-disabled="form.$invalid">
      <i class="glyphicon glyphicon-ok icon-white"></i>
      Save
  </a>
  <div class="version">v{{applicationdata.Version}}</div>
</nav-footer>

Demo link