$compile和ng repeat未返回正确的元素
$compile and ng-repeat not returning correct element
我无法让$compile
手动使用ng-repeat
。这里有一个类似的问题:$compile编译的ngRepeat不起作用,但它不能解决这里的问题,因为我在作用域上手动调用$digest
,但它仍然不起作用。
我所指的代码在这里:
js:
angular.module('myApp', []);
angular.module('myApp').directive('test', ['$compile', '$rootScope', '$timeout',
function ($compile, $rootScope, $timeout) {
var myScope = $rootScope.$new();
myScope.numbers = [1, 2, 3];
var html = '<div ng-repeat="number in numbers">{{ number }}</div>';
var html2 = '<div>{{ numbers }}</div>';
var returnObject = $compile(html)(myScope);
$timeout(function () {
myScope.$digest();
console.log(returnObject);
});
return {};
}
]);
html:
<html ng-app="myApp">
<head>
...
</head>
<body>
<h1 test>Hello Plunker!</h1>
</body>
</html>
指向plunker的链接:http://plnkr.co/edit/RC1EILu16GPr0MGmSpcb?p=preview
如果将html
变量切换为html2
,它将按预期进行插值并返回对象。但在它的当前状态下,我希望得到一个包含1、2、3。。。
在内部,ng repeat的工作原理是将元素添加到指令的父元素中。调用ng repeat.编译后的ng repeat没有可添加其元素的父元素,因此无法工作。
添加父div(Plunk)
var html = '<div><div ng-repeat="number in numbers">{{ number }}</div></div>';
var html2 = '<div>{{ numbers }}</div>';
var returnObject = $compile(html)(myScope);
$timeout(function () {
myScope.$digest();
console.log(returnObject.children());
相关文章:
- react-让一个元素返回两个相邻的<tr>标签
- Javascript可见元素返回未定义
- 如果循环中至少有一个元素返回 false,如何将变量设置为 false
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- jQuery mMenu如何通过单击某些元素返回到上一节
- Ajax 元素返回完整的 html 代码
- Javascript:计算每个表的表行数,并向相应的元素返回一个值
- 激活 .stop() 后,将元素返回到其起始位置
- 访问 iFrame 中的元素返回空值
- Knockout.js 从 observableArray 中提取元素返回 undefined
- 获取 0 的文档元素返回什么
- scrollTop为javascript中的所有文档元素返回0,但滚动事件在body标记上触发
- 从Ajax生成的DOM元素返回id
- 如何在交换后将列表元素返回到其原始样式
- 文本元素返回"undefined"
- 从数组中获取随机元素返回相同的元素
- 从聚合物元素返回简单值
- React:将新插入的子元素返回给父元素以更新状态
- 元素返回NaN作为宽度
- 新添加的DOM元素返回null