如何将动态文件名传递给ng-include
How do I pass a dynamic filename to ng-include
在我正在进行的一个项目中,我正在实现一些SVG映射。我正在开发的应用程序有许多位置,其中有两个与之对应的SVG文档:一个是详细说明区域外观的视觉地图,另一个是具有多边形的"空间"地图,这些多边形被分配了UI引导工具提示事件,这样您就可以读取有关空间的信息。例如:
<h3 class="text-center">Fargo Building 1</h3>
<div class="svg-map" ng-include="'Content/svg/fargo-map.svg'"></div>
<div class="svg-overlay" ng-include="'Content/svg/fargo-map-spaces.svg'"></div>
然而,我所有的地图每次都在做完全相同的事情,无一例外使用路由,我建立了一个系统,通过这个系统我可以将关于地图的信息传递给我的mapController
,并试图以这种方式重构所述标记:
注意:文件名中已经有单引号
<h3 class="text-center">{{ vm.mapInfo.mapName }}</h3>
<div class="svg-map" ng-include="{{ vm.mapInfo.mapFile }}"></div>
<div class="svg-overlay" ng-include="{{ vm.mapInfo.mapSpaces }}"></div>
一个小问题:如上所述的重构抛出了以下Angular异常:
Syntax Error: Token '{' invalid key at column 2 of the expression [{{ vm.mapInfo.mapFile }}] starting at [{ vm.mapInfo.mapFile }}].
Syntax Error: Token '{' invalid key at column 2 of the expression [{{ vm.mapInfo.mapSpaces }}] starting at [{ vm.mapInfo.mapSpaces }}].
按照指示(删除第二层大括号)会产生不同的错误。删除大括号期间导致HTTP 404错误。
问题:我可以用什么方式以编程方式传递ng-inclu
sion的文件名?
注意:我也不关心是否能够在运行时更改ng-inclu
-ded页面。当用户导航到不同的地图时,路由系统会处理所有事情。我只想能够包含一个来自controllerAs
变量的文件
这应该在没有花括号的情况下工作:
<div class="svg-map" ng-include="vm.mapInfo.mapFile"></div>
在您的控制器中:
var vm = this;
vm.mapInfo = { mapFile: "Content/svg/fargo-map.svg"};
类似的解决方案请参见此小提琴。
相关文章:
- 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和html文件