Jquery 动态添加html时,作用域丢失

Jquery 动态添加html时,作用域丢失,jquery,html,angularjs,angularjs-scope,Jquery,Html,Angularjs,Angularjs Scope,我想动态地将行添加到表中 为此,我使用了jquery语法 但是在这之后,我从这个新添加的行的范围丢失了。 我无法在同一台计算机上执行任何功能 不确定可能的原因是什么。尝试将行捕获到某个变量中: var row = $('<tr></tr>').appendTo('tbody') row.click(function(){ alert('hello') }) /* or try bind some event to row */ row.bind('click',funct

我想动态地将行添加到表中

为此,我使用了jquery语法

但是在这之后,我从这个新添加的行的范围丢失了。 我无法在同一台计算机上执行任何功能


不确定可能的原因是什么。

尝试将行捕获到某个变量中:

var row = $('<tr></tr>').appendTo('tbody')
row.click(function(){ alert('hello') })
/* or try bind some event to row */
row.bind('click',function(){ alert('hello!') })
var行=$('').appendTo('tbody'))
单击(函数(){alert('hello')})
/*或者尝试将某个事件绑定到行*/
bind('click',function(){alert('hello!')})
请参见和上的角度常见问题解答,在其正下方

您不应该使用jQuery来创建新行,因为这只是将元素添加到DOM中——Angular不知道这些元素,因此不会给它们一个作用域。如果不小心,Angular在更新范围时甚至可能会删除新行

相反,您应该使用Angular为您提供的功能,在您的案例中最有可能是指令。这是一个非常标准的用例:

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody>
        <tr ng-repeat="user in users">
            <td>{{user.ID}}</td>
            <td>{{user.Name}}</td>
            <td><button ng-click="DoSomething(user)">Do Something</button></td>
        </tr>
    </tbody>
</table>

身份证件
名称
行动
{{user.ID}
{{user.Name}
做点什么
在本例中,您不需要创建新行,而是将一个新对象添加到
scope.users
数组中

如果您想执行一些非DOM操作,例如将单击事件动态绑定到元素以显示警报,那么如果您确实愿意,使用jQuery仍然可以,因为它不会更改应用程序的状态。

是,现在就完成了。。 我需要做的是使用$compile

我编译了新添加的行以及现有的html范围


猜猜它是什么样子的。:)

谷歌的事件委托和修改相应的处理程序。如果不张贴示例代码,我们可以猜测一千件事情发生错误。另外,当您可以非常轻松地使用Angular(在模型中使用ng重复)添加行时,为什么要使用jQuery添加行?不是重复的,但我相信@dekkard的这一点非常适合这种情况添加一些代码,以便获得准确的答案