Mar*_*tin 16 html javascript jquery angularjs
我正在使用awesomium创建一个游戏UI,在某些时候游戏加载并执行一大堆javascript,这意味着创建任意新的UI元素.例如
jQuery(document.body).append('<span class="game-status-alert">You Lose!</span>');
Run Code Online (Sandbox Code Playgroud)
这很好用,当我想创建一些稍微更高级的UI元素时,问题就来了,特别是使用angular.例如:
function ChatBoxControl($scope) { /* Stuff */ }
jQuery(document.body).append(
'<div ng-controller="ChatBoxControl"><div ng-repeat="line in chat"><span>{{line}}</span></div></div>'
);
Run Code Online (Sandbox Code Playgroud)
毫不奇怪,这不会创建一个新的角度视图.它只是将html添加到文档中,并且永远不会绑定到ChatBoxControl.
我怎样才能实现我在这里想做的事情?
Art*_*eev 23
你应该$ compile动态添加角度内容.就像是:
jQuery(document.body).append(
$compile(
'<div ng-controller="ChatBoxControl"><div ng-repeat="line in chat"><span>{{line}}</span></div></div>'
)(scope)
);
Run Code Online (Sandbox Code Playgroud)
您可以使用以下内容获得的任何元素的范围:
var scope = angular.element('#dynamicContent').scope();
Run Code Online (Sandbox Code Playgroud)
你也应该得到$ compile,可以注入其他控制器.
另请参阅:AngularJS + JQuery:如何在angularjs中获取动态内容
您可能希望将ng-include与ng-repeat结合使用.这是一个简单的例子:http://plunker.no.de/edit/IxB3wO?live = preview
<div ng-repeat="dom in domList" ng-include="dom"></div>
Run Code Online (Sandbox Code Playgroud)
Parent $ scope将保留部分列表加载到视图中.并且ng-repeat + ng-include将迭代并根据列表显示部分.
当它是正确的时间时,您可以将部分附加到dom列表中.例如
$scope.domList.push("chatbox.html");
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,将DOM操作放入控制器不是有角度的方式.)
| 归档时间: |
|
| 查看次数: |
15046 次 |
| 最近记录: |