如何动态操作角度 ng-include 命令
how to dynamically action an angular ng-include command
是否可以将ng-include元素动态添加到HTML页面并使其操作?
我有一个拖放应用程序,您可以在其中将元素拖到页面上,然后在拖放区域中将元素替换为更详细的元素。例如,您拖动一个显示"日历"的框,当它被删除时,将显示一个日历。需要明确的是,创建一个新元素并将其添加到 DOM 中,它在删除之前不存在。
当元素被删除时,我希望我可以用如下所示的 HTML 块替换它。而不是像目前这样在字符串中定义标记,这不是很好:
<div class='panel panel-default'>
<div class='panel-heading'>
<h3 class='panel-title'>
<span class='glyphicon glyphicon-remove'></span>
WIDGET NAME
<spanclass='glyphicon glyphicon-cog'></span>
</h3>
</div>
<div class='widgetContainer' ng-include="'widgets/widget.html'"></div>
</div>
当上述 HTML 插入到页面中时,不包括引用的 HTML 文件。
我想发生的是加载一个包含小部件标记的 HTML 文件并包含在适当的位置。
我是 Angular 的新手,所以我不知道这是否是因为:
- 不支持动态添加 ng-include
- 我是否需要对控制器执行某些操作来处理此逻辑
- 我应该使用标签而不是属性吗?
- 这是不可能的。
请提供带有解决方案的示例,正如我所说,我是 Angular 的新手。
谢谢
更新
用于创建我要动态添加到页面的 HTML 的代码如下所示
$("#template").append(
" '
<div class='panel panel-default'>'
<div class='panel-heading'>'
<h3 class='panel-title'>'
<span style='padding-right: 10px; cursor:pointer;' class='glyphicon glyphicon-remove' onclick='removeElement(this)'></span>'
" + widgetDetail['serviceName'] + "'
<span style='float:right; cursor:pointer;' class='glyphicon glyphicon-cog' onclick='toggleWidgetDetail(this)'></span>'
</h3>'
</div>'
<div class='markupContainer' ng-include='"'widgets/" + id +".html''"></div>'
</div>'
"
);
我已将完整的代码上传到GitHub。拖放方面目前由HTML5 javascript处理,可以在文件/public/javascripts/js_dragndrop.js
中看到。添加到页面的新小部件(上面的代码)处于/public/javascripts/jq_dragndrop.js
我正处于原型设计阶段,试图找出 DragNDrop 元素,所以不要指望高质量的代码:)
我找到了一种方法来实现我想要的,方法是将HTML5拖放代码移动到AngularJS指令中,然后(使用此[从角度外部编译动态模板]作为指导)将html模板加载到我想要的地方。
主代码更改如下所示:
angular.element(document).injector().invoke(function ($compile) {
var widgetDetail = widgets[e.dataTransfer.getData('Text')];
var obj = $("#template");
var scope = obj.scope();
obj.append(
"<div class='panel panel-default'><div class='panel-heading'><h3 class='panel-title'>'
<span style='padding-right: 10px; cursor:pointer;' class='glyphicon glyphicon-remove' onclick='removeWidget(this)'></span>'
" + widgetDetail['serviceName'] + "'
<span style='float:right; cursor:pointer;' class='glyphicon glyphicon-cog' onclick='toggleWidgetDetail(this)'></span>'
</h3></div><div class='markupContainer' ng-include='"'widgets/" + widgetDetail['serviceId'] + ".html''"></div>'
"
);
$compile(obj.contents())(scope);
scope.$digest();
});
如果你有兴趣.js你可以在 Git Project/public/controllers/template 中找到完整的代码。
- AngularJS ng include dons'不起作用
- ng include导致角度问题
- AngularJS ng include won'不知什么原因不起作用
- 如何将动态文件名传递给ng-include
- 有没有办法在AngularJS中强制重新加载递归ng-include
- 使用ng-include渲染Angular模板时出现问题
- 每个ng-include模板都有单独的变量
- AngularJS:如何使用ng-include将javascript文件加载到部分中
- 阻止“ng include”创建孤立的作用域.AngularJS
- 如何扩展 Angularjs ng-include 指令
- 在 ng-include 中使用变量作为表达式
- ng-class 在 angularJs 中由 ng-include 包含的文件内不起作用
- 模块化与性能与性能与角度应用程序中的ng-include
- 未捕获的错误: [$injector:modulerr] - 角度 ng-include
- 使用ng-include调用控制器时AngularJS路由解析
- angular js中嵌套ng include内的表单
- 在AngularJS中动态切换ng include和ng控制器
- 使用ng-include重用以前实例化的模板
- 页面不可滚动,其中ng include=“”;函数()"-该代码已不再使用
- 如何动态操作角度 ng-include 命令