Javascript AngularJs jQuery:动态添加HTML
我试图通过列标题上的按钮将行和列动态添加到HTML表中,该按钮会弹出一条带有e angularJs ng click的警报消息 我的列和行是使用jQuery正确添加的,但是,当单击按钮时,它不会调用控件中的警报函数“hello()”! 以下是我针对该问题的JSFIDLE链接: HTML:Javascript AngularJs jQuery:动态添加HTML,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我试图通过列标题上的按钮将行和列动态添加到HTML表中,该按钮会弹出一条带有e angularJs ng click的警报消息 我的列和行是使用jQuery正确添加的,但是,当单击按钮时,它不会调用控件中的警报函数“hello()”! 以下是我针对该问题的JSFIDLE链接: HTML: 项目 好啊 某项 +划船 +纵队 JS: 函数登录控制器($scope){ $scope.addRow=函数(){ $(“#mtable tbody”).append($(“#mtable tbody
项目
好啊
某项
+划船
+纵队
JS:
函数登录控制器($scope){
$scope.addRow=函数(){
$(“#mtable tbody”).append($(“#mtable tbody tr:last”).clone();
$('#mtable tbody tr:last:checkbox').attr('checked',false);
$('#mtable tbody tr:last td:first').html($('#row').val());
}
$scope.addCol=函数(){
$('#mtable tr')。追加($(“”);
$('#mtable thead tr>td:last').html('Hello!');
$('#mtable tbody tr').each(function(){$(this).children('td:last').append($('')});
}
$scope.hello=函数(){
警惕(“你好”);
}
}
问题在于不同的上下文、进程/执行时间。最好的方法是只使用jQuery或Angularjs
仅使用Angularjs:
<!-- rows -->
<tr ng-repeat="row in table">
<!-- cols -->
<td ng-repeat="col in row">
{{ col }}
</td>
<td>
<button type="button" ng-click="addCol(row)">New col</button>
</td>
</tr>
<button type="button" ng-click="addRow()">New row</button>
- 使用对象表示表(矩阵)
- 添加行函数将向表对象追加一行
- addcol函数将在表对象的行上追加一列
$scope.table = [];
添加行函数:
$scope.addRow = function () {
$scope.table.push([]);
}
添加列函数
$scope.addCol = function (row) {
row.push('col value');
}
使用Angularjs呈现表格:
<!-- rows -->
<tr ng-repeat="row in table">
<!-- cols -->
<td ng-repeat="col in row">
{{ col }}
</td>
<td>
<button type="button" ng-click="addCol(row)">New col</button>
</td>
</tr>
<button type="button" ng-click="addRow()">New row</button>
{{col}}
新科
新行
由于addCol函数需要列目标来添加新项,因此操作按钮需要位于行内。我猜您来自JQuery world 这里有一些使用AngularJS的经验法则
看看angular.org他们有非常好的教程和免费课程我在下面的链接和代码中找到了我想要的答案:
angular.module('App',[])
.controller('MainCtrl',['$scope',函数($scope){
$scope.matrix=[[0]];
$scope.addColumn=函数(){
$scope.matrix.forEach(函数(行){
行。推送(0);
});
};
$scope.addRow=函数(){
var columnCount=$scope.matrix[0]。长度;
var newRow=[];
对于(变量i=0;i=0&&idx<$scope.matrix.length){
$scope.矩阵拼接(idx,1);
}
};
$scope.deleteColumn=函数(idx){
if(idx>=0&&idx<$scope.matrix[0].length){
$scope.matrix.forEach(函数(行){
行拼接(idx,1);
});
}
};
}]);代码>
删除
删除
添加行
添加列
作为JSON:
My columns和rows是使用jQuery正确添加的-这根本不是“正确的”。究竟为什么要将jQuery代码放在控制器中?使用ngRepeat
或任何其他内置角度指令。如果您使用的是angular,IMO最好使用不同的方法。不使用jQuery添加行,只需修改生成行的ng model
(顺便说一下,您现在没有这样做),angular将更新表本身:)对于您的代码,我想知道为什么您同时使用angular和jQuery。看来你不需要这么做。当做
<!-- rows -->
<tr ng-repeat="row in table">
<!-- cols -->
<td ng-repeat="col in row">
{{ col }}
</td>
<td>
<button type="button" ng-click="addCol(row)">New col</button>
</td>
</tr>
<button type="button" ng-click="addRow()">New row</button>