为什么 ngClick 在$compile后不再工作
Why ngClick doesn't work anymore after $compile?
http://plnkr.co/edit/kL2uLPQu2vHHKIvRuLPp?p=preview
单击按钮后,我从控制器调用编译 html 并将其注入正文的服务。
html 是针对控制器的$scope编译的(参见 $scope.name 起的"Hello World"),但 ngClick 不起作用。
为什么?
我如何针对单个手机的范围进行编译(在 ng 重复内?
我知道在这种情况下最好有一个指令,但我需要了解它是如何工作的,因为我需要一个对话框(请参阅如何让 AngularJS 绑定使用花哨的框对话框?
我在这里看到的两个问题似乎都源于对角度表达和范围的误解。
在指令或绑定中使用表达式时,例如在这两个示例中
<p>{{ phone.name }}</p>
<a ng-click="alert('angular')">Link</a>
他们无法访问 JavaScript 范围。其中使用的任何标识符都来自角度范围,即 $scope
.所以
{{ phone.name }}
将显示
$scope.phone.name
和
ng-click="alert('angular')"
将尝试打电话
$scope.alert('angular')
查看您的 plunker,您正在尝试同时使用 phone
和 alert
,而无需将它们分配给范围。可以通过将警报分配给控制器范围来创建函数来执行警报,但phone
会更加困难,因为它每次都需要不同。
您可以为此创建一个全新的范围并分配phone
就像我在这里所做的那样,或者您可以从ng-repeat
内部传递范围并在此范围内编译新元素,就像我在这里所做的那样。
名称alert
未在编译模板的$scope
上定义。如果您确实包含alert
函数,则ng-click
确实有效:
$scope.alert = function (msg) { window.alert(msg); };
演示
但是,正如您自己指出的那样,这项工作更适合directive
而不是服务。
相关文章:
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 当我更改innerHtml时,引导选项卡事件不再工作
- 天气应用 API 不再工作
- AngularJS Dropdown在使用指令后不再工作
- 虚拟键盘在更新到 Chrome v50 后不再工作
- $(这个)没有't在onClick事件中不再工作
- 升级至Knockout 3.0.0,Templates/Custom Binding Handlers不再工作
- 自定义绑定在KnockoutJS 3.0中不再工作
- 为什么不是'我的jQuery不再工作了
- 为什么 ngClick 在$compile后不再工作
- AngularJs 路由不再工作.地址栏更改,但视图不会更改
- yam.platform.setAuthToken在IE 8和IE 9中不再工作
- 节点.js版本已更改,脚本不再工作
- 是 ngAnimate 不再工作了
- .click() 不再工作 jquery.
- JS点击功能不再工作以更改链接颜色
- 谷歌地图API不再工作
- 事件处理程序在 html 重新呈现后不再工作
- Javascript检测不再工作
- Rails:Paperclip gem在切换计算机后不再工作