我试图在元素中放入一些有角度的js模板字符串,并期望得到编译的输出。但这没有发生。
HTML
<div ng-controller="testController">
<div ng-bind-html-unsafe="fruitsView"></div>
</div>
控制器:
function filterController($scope){
...
$scope.arr = ["APPLE", "BANANA"];
$scope.fruitsView = '<div><p ng-repeat="each in arr">{{each}}</p></div>';
}
输出是正义的{{each}}
。
那么如何$scope.fruitsView
在元素内插入一个有角度的js模板字符串(here )?
我为此做了一个小提琴。
在这种情况下,您不希望仅“插入HTML”,而是对其进行编译。您可以使用该$compile
服务创建DOM节点。
var tpl = $compile( '<div><p ng-repeat="each in arr">{{each}}</p></div>' )( scope );
如您所见,$compile
返回一个函数,该函数将范围对象作为参数,对代码进行评估。element.append()
例如,可以使用将结果内容插入DOM
。
重要说明 :但是在 任何情况下 ,控制器中都不会包含任何与DOM相关的代码。正确的地方 始终
是指令。可以将这些代码轻松地放入指令中,但是我不知道为什么您要以编程方式完全插入HTML。
您能否在这里阐明一些信息,以便我提供更具体的答案?
更新资料
假设您的数据来自服务:
.factory( 'myDataService', function () {
return function () {
// obviously would be $http
return [ "Apple", "Banana", "Orange" ];
};
});
您的模板来自服务
.factory( 'myTplService', function () {
return function () {
// obviously would be $http
return '<div><p ng-repeat="item in items">{{item}}</p></div>';
};
});
然后,您创建一个简单的指令,该指令读取提供的模板,对其进行编译,然后将其添加到显示中:
.directive( 'showData', function ( $compile ) {
return {
scope: true,
link: function ( scope, element, attrs ) {
var el;
attrs.$observe( 'template', function ( tpl ) {
if ( angular.isDefined( tpl ) ) {
// compile the provided template against the current scope
el = $compile( tpl )( scope );
// stupid way of emptying the element
element.html("");
// add the template content
element.append( el );
}
});
}
};
});
然后从您的角度来看:
<div ng-controller="MyCtrl">
<button ng-click="showContent()">Show the Content</button>
<div show-data template="{{template}}"></div>
</div>
在控制器中,您只需将其捆绑在一起:
.controller( 'MyCtrl', function ( $scope, myDataService, myTplService ) {
$scope.showContent = function () {
$scope.items = myDataService(); // <- should be communicated to directive better
$scope.template = myTplService();
};
});
它应该一起工作!
PS:这都是假设您的模板来自服务器。如果不是,则您的模板应位于指令中,这可以简化操作。
问题内容: 有没有一种pythonic方式将元素插入字符串中的每个第二个元素? 我有一个字符串:“ aabbccdd”,我希望最终结果是“ aa-bb-cc-dd”。 我不确定该怎么做。 问题答案: 假设字符串的长度始终是偶数, 该也可以消除 算法是将字符串分组为对,然后将其与字符连接在一起。 代码是这样写的。首先,它分为奇数位和偶数位。 然后使用该函数将它们组合成一个可迭代的元组。 但是元组不是
问题内容: 我有一个非常基本的模板(basic_template.html),并希望使用使用另一部分模板格式化的数据来填写。basic_template.html可能包含使用部分模板格式化的几件事。 我应该如何在views.py中构建代码? 我这样做的原因是稍后将使用Ajax填充。我这样做对吗? 问题答案: 你可以做: 另一个Django模板在哪里。在这里,你可以放入将用Ajax获得的HTML。
问题内容: 目的: 在Golang中的字符串中每x个字符插入一个字符 输入: 预期产量: 尝试次数 尝试一次 结果是: 尝试两次 计算字符数 对于循环 如果X = 5,则插入一个 尝试三 扫描结合加入 问题 目前尝试两次和三次不包含代码段的原因是,我仍在思考应该使用哪种方法在Golang中的字符串中每X个字符插入一个字符。 问题答案: https://play.golang.org/p/HEGbe
内建的 <template> 元素用来存储 HTML 模板。浏览器将忽略它的内容,仅检查语法的有效性,但是我们可以在 JavaScript 中访问和使用它来创建其他元素。 从理论上讲,我们可以在 HTML 中的任何位置创建不可见元素来储存 HTML 模板。那 <template> 元素有什么优势? 首先,其内容可以是任何有效的HTML,即使它通常需要特定的封闭标签。 例如,我们可以在其中放置一行表
问题内容: 我是angularJs的新手。我正在尝试创建包含输入元素和按钮的新指令。我想使用此指令在单击按钮时清除输入文本。 当我在html中使用指令时,出现以下错误: 的HTML: clearable_input.js: 我无法弄清楚如何实现这一目标。 问题答案: 好吧,这个错误是不言自明的。您的模板需要具有一个根,而您的必须具有两个根。解决此问题的最简单方法是将整个内容包装在a 或a中: 之前
问题内容: 给定以下XML文件: 我想 在某个预先存在的元素之后 添加一个新 元素 。例如,如果要在之后添加节点,则新的XML应该如下所示: 我必须通过在函数中使用Java DOM来执行此操作。函数签名应如下所示: 哪里: 是预先存在的元素,之后将进行插入; 是插入的元素类型; 是新插入的元素的名称属性。 目前,我缺乏JDOM或任何其他Java XML库的经验。 您能提供一个示例代码,还是将我指向