【发布时间】:2014-09-10 03:07:25
【问题描述】:
我想做的事:
使用指令创建自定义元素,并能够在不同时间将这些元素动态添加到视图中。
问题:
当我将自定义元素动态添加到视图中时,这些元素在视图中显示为 html,但指令不会像预期的那样更新元素。
例如:
我们有一个自定义元素 -> <ell></ell>。当我在原始 html 中包含 <ell></ell> 时,该指令按预期工作并用 4 个 div 填充它,每个 div 都有一个“块”类。像这样 -> <div class="block"></div>.
但如果我将 div -> <div id="level" ng-bind-html="piecesInPlay"></div> 的 HTML 设置为等于控制器内的字符串,并更新该字符串,则该指令不会作用于 <ell></ell> 标记。
以下是相关代码:
Angular 指令:(下面的 scp.pieces[] 中的每个元素都有一个指令)
app.directive('sqr', function() {
return {
restrict: 'E',
template: tetris.templateString,
link: tetris.randColor
};
});
角度控制器:
app.controller('levelCtrl', ['$scope', function(scp) {
scp.pieces = ['<ell></ell>', '<r-ell></r-ell>', '<sqr></sqr>', '<zee></zee>', '<r-zee></r-zee>', '<tee></tee>', '<line></line>'];
scp.piecesInPlay = '<ell></ell>';
scp.generateNewPiece = function() {
var min = 0, max = 6;
var randPiece = Math.floor(Math.random() * (max - min + 1)) + min;
scp.piecesInPlay += scp.pieces[randPiece];
return scp.pieces[randPiece];
};
// generates a random piece and adds it to the pieces in play
scp.generateNewPiece();
}]);
HTML:
<div id="level" ng-controller="levelCtrl" ng-bind-html="piecesInPlay">
</div>
【问题讨论】:
标签: javascript jquery html angularjs angularjs-directive