Javascript 为什么ngClick没有';在$compile之后不能再工作了?

Javascript 为什么ngClick没有';在$compile之后不能再工作了?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,单击按钮后,我从控制器调用编译html并将其注入主体的服务 html是针对控制器的$scope编译的(请参阅$scope.name中的“Hello World”),但ngClick不起作用 为什么? 如何针对单个电话的范围进行编译(在ng repeat内?) 我知道在这种情况下最好有一个指令,但我需要了解它是如何工作的,因为我需要它作为一个对话框(请参见)在编译模板的$scope上没有定义名称alert。如果您包含了一个警报功能,那么ng单击会起作用: $scope.alert=函数(msg){

单击按钮后,我从控制器调用编译html并将其注入主体的服务

html是针对控制器的$scope编译的(请参阅$scope.name中的“Hello World”),但ngClick不起作用

为什么?

如何针对单个电话的范围进行编译(在ng repeat内?)


我知道在这种情况下最好有一个指令,但我需要了解它是如何工作的,因为我需要它作为一个对话框(请参见)

在编译模板的
$scope
上没有定义名称
alert
。如果您包含了一个
警报
功能,那么
ng单击
会起作用:

$scope.alert=函数(msg){window.alert(msg);};


但是,正如您自己所指出的,这项工作更适合于
指令
而不是服务。

在编译模板的
$scope
上未定义名称
警报
。如果您包含了一个
警报
功能,那么
ng单击
会起作用:

$scope.alert=函数(msg){window.alert(msg);};


然而,正如您自己所指出的,这项工作更适合于
指令
而不是服务。

我在这里看到的两个问题似乎都源于对表达式和范围的误解

在指令或绑定中使用表达式时,例如在以下两个示例中

<p>{{ phone.name }}</p>
<a ng-click="alert('angular')">Link</a>
将显示

$scope.phone.name

我会打电话给你

$scope.alert('angular')
查看您的plunker,您正在尝试使用
电话
警报
,而不将它们分配给范围。您可以通过将警报分配给控制器范围来创建执行警报的功能,但是
电话
将更加困难,因为它需要每次都不同


您可以像我所做的那样为此创建一个全新的作用域并分配
电话
,也可以像我所做的那样从
ng repeat
内部传递作用域并在此作用域中编译新元素。

我在这里看到的两个问题似乎都源于对表达式和作用域的误解

在指令或绑定中使用表达式时,例如在以下两个示例中

<p>{{ phone.name }}</p>
<a ng-click="alert('angular')">Link</a>
将显示

$scope.phone.name

我会打电话给你

$scope.alert('angular')
查看您的plunker,您正在尝试使用
电话
警报
,而不将它们分配给范围。您可以通过将警报分配给控制器范围来创建执行警报的功能,但是
电话
将更加困难,因为它需要每次都不同

您可以像我所做的那样为此创建一个全新的作用域并分配
phone
,也可以像我所做的那样从
ng repeat
内部传递作用域并在此作用域中编译新元素