我把它复制到了某个地方:
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 ...
答案 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">