javascript - 为什么 AngularJS 表达式在 HTML 模板中只被替换一次?

标签 javascript angularjs angularjs-directive angularjs-ng-repeat

我是 angularjs 新手,正在尝试遵循 html 模板。但 AngularJS 只用值替换文本区域中的第一个 {{fragment.id}} 表达式。所有其他 {{fragment.id}} 表达式在生成的 html 代码中保持不变。

<div class="input-box" ng-repeat="fragment in project.fragments">
     <textarea id="code-{{ fragment.id }}" class="code-input" ng-model="content">{{ fragment.content }}</textarea>
     <button class="btn btn-xs btn-primary" style="margin-top:5px;" ng-click="execute({{ fragment.id }})"><i class="glyphicon glyphicon-play"></i> Run</button>
     <script type="text/javascript">
          applyCodeMirror({{ fragment.id }});
     </script>
     <div id="result-{{ fragment.id }}" ng-model="result"></div>
</div>

我还有另一个问题,是否可以像我上面所做的那样使用 angularjs 表达式生成 JavaScript 代码。

最佳答案

一些事情(上面的代码涉及)

  1. 使用ng-model绑定(bind)$scope输入变量 - 您的文本区域变为: <textarea id="code-{{ fragment.id }}" class="code-input" ng-model="fragment.content"></textarea>

  2. {{}}用于输出 Angular $scope View 变量 - 您不会使用 {{}}在 JavaScript 代码中获取 Angular 变量,因此 <script>{{fragment.id}}</script>是无效的。如果你想使用 Angular $scope Angular 之外的变量(不推荐,但我们都有自己的理由)- 使用 angular.element(elem).scope()获取 scope 的实例(其中 elemng-controller 声明中的元素)

  3. Angular 指令(例如 ng-click )不需要 {{}}获取$scope变量 - 您的ng-click变为:ng-click="execute(fragment.id)"

关于javascript - 为什么 AngularJS 表达式在 HTML 模板中只被替换一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24918763/

相关文章:

javascript - 获取 jquery 中 window.history.back() 中存在的 url

javascript - 按元素名称中的索引选择元素

javascript - 如何将 Javascript 中的返回值传递给 Controller

javascript - Angular Directive(指令)未获取更新的 Controller 数据

javascript - Ng-repeat localStorage 数据

javascript - 如何在 AngularJS 中处理实时数据和查看状态

javascript - 使用 Angular 将字符串中编码的 HTML 转换为输入字段的纯文本

javascript - formArrayName 必须与父 formGroup 指令一起使用

javascript - 如何使工具提示显示在 'mouseover' 上的 d3.js 中并在 'mouseout' 处删除?

javascript - 在 Angular 中使用原型(prototype)扩展 Controller