AngularJS:在模板中更改部分html(用于指令)

时间:2014-09-10 11:46:45

标签: angularjs

我把它复制到了某个地方:

angular.module('app')
  .directive('ffInclude', ['$http', '$templateCache', '$compile' ,function($http, $templateCache, $compile) {
    return function(scope, element, attrs) {
      var templatePath = attrs.ffInclude;
      $http.get(templatePath, { cache: $templateCache }).success(function(response) {
        var contents = element.html(response).contents();
        $compile(contents)(scope);
      });
    };
  }]);

这个指令的意思是像ng-include一样工作但没有创建新的范围。

可以像这样使用:

<div ff-include="my-template.html"></div>

我的问题如下:我也想将它用于一般模板,在这个模板中我想切换一些东西(html元素的属性)。

所以,如果我有这个HTML:

<div ff-include="my-general-template.html" new-attribute-value="false"></div>

模板看起来像这样:

<div ng-show="true">Here is some general content</div>

在指令中,我应该得到如下属性:

var newAttributeValue = attrs.newAttributeValue;

但是如何将此属性与新属性交换为模板中ng-show属性中的任何值?

编辑:我制作了plunk ...

1 个答案:

答案 0 :(得分:1)

我喜欢这种做一般模板的想法...... =)

以下解决方案不会隔离范围。 http://plnkr.co/edit/jFj8MHZ9Kalrk4qO35IX?p=preview

  return function(scope, element, attrs) {
    scope.newAttributeValue = attrs.newAttributeValue;
    console.log("new=", scope.newAttributeValue);

在一般模板上:

 <div ng-show="newAttributeValue">