【发布时间】:2016-10-16 15:44:01
【问题描述】:
我想为各种用例使用 Angular 1 指令生成静态 html。例如:
<div>
Name: <span ng-bind="name"></span>
</div>
<div ng-if="phone">
Phone: <span ng-bind="phone"></span>
</div>
给定{name: "John"} 作为$scope 应该生成以下html:
<div>
Name: <span>John</span>
</div>
请注意没有 angular 指令和 angular ng-if cmets。 Angular 1 可以做到这样的事情吗?
更新:我想使用 Angular 的模板引擎来生成静态的、非交互式的 html。想想下划线模板或服务器端模板引擎。用例是生成用户可以带入自己的非角度应用程序的 html 片段。另一个用例是从 Angular 模板组装静态 html 电子邮件。所有这些都在没有服务器端的情况下完成。 Angular 已经让你这样做了,但是它把它的所有工件都留在了 html 中,这显然不是我的用例所需要的。这并不像一些评论者所说的那样效率低下,实际上能够在没有服务器端并利用已经强大的 Angular 模板引擎生成 html 时非常有效。
【问题讨论】:
-
@charlietfl 实际上,这是不正确的。他想做一些像服务器端渲染这样的事情,但那时你失去了 Angular 给你的好处,所以这看起来很傻。
-
angular 在浏览器中运行,所以真的不清楚你要做什么
-
我正在尝试在不使用服务器的情况下在客户端生成静态 html。用例是用户填写表格,然后获取 html(想想嵌入代码),他可以复制,以可呈现的格式显示他的数据。没错,将其用作服务器端渲染引擎。我完全意识到我正在失去角度动态性质的好处,因此我说静态 html。但我正在利用 Angular 的强大指令来生成我需要的 html。
-
是的,有可能。是的,这是非常低效的。而且你失去了其他模板引擎的宝贵功能,可以在客户端和服务器端呈现(并且不限于服务器端的 JS)。
-
但这就是重点,Angular 不是一个模板引擎。它是一个数据绑定框架。移除所有的角度伪影会破坏框架的双向绑定特性。即使是“一次性绑定”也会跟踪角度,如果只是为了确保它们真的不会更新超过一次。这根本不是angular设计的东西。 可能您可以建议将其作为 Angular2 的增强功能,但目前不太可能针对此类功能重新设计 Angular1。
标签: angularjs