gpt4 book ai didi

javascript - AngularJS 复制现有表格行

转载 作者:行者123 更新时间:2023-11-30 16:09:45 28 4
gpt4 key购买 nike

我有一个带有编辑和删除按钮的表格。但是现在我也想做一个克隆按钮。

克隆按钮应该是这样工作的:它从用户点击的行中克隆几乎所有的数据(比如他拿不到的id等数据)。然后它转到编辑页面,并在那里填充输入/选择值中的数据。

但是我不知道我是怎么做到的。我现在有一个输出所有数据的函数:var cloneJob = angular.extend(job);

然后进入编辑页面 location.href = '#/jobs/add';但问题是他没有填写输入/选择值。AngularJS 有这个功能吗?我是在正确的轨道上还是需要做其他事情?

更新这里有更多的代码:

这是我的表格代码:

<tr ng-repeat="job in (filtered.rows = (jobs | orderBy: orderByDate:true | filter:filterByActive | filter:filter.query)) | skip:pagination.pageSkip() |limitTo:pagination.perPage" ng-class="{ inactive : !job.active }"  style="cursor: pointer;">
<td>
<span ng-bind="job.title"></span>
</td>
<td>
<span ng-bind="job.client.name"></span>
</td>
<td>
<span ng-bind="job.referenceNumber"><span>
</td>
<td>
<span ng-bind="job.creationDate"><span>
</td>
<td>
<a ng-href="#/jobs/edit/{{job.id}}/tab/candidates" ng-bind="job.candidates.length"></a>
</td>
<td>
<span class="status" ng-class="job.status.value"></span>
</td>
<td>
<a ng-if="job.active" ng-href="#/jobs/edit/{{job.id}}" class="icon go">
<span class="tooltip" translate="job_name_details"></span>
</a>
<a ng-if="job.active" class="icon close" ng-click="showClosePopup(job)">
<span class="tooltip" translate="job_close"></span>
</a>

<a ng-click="cloneJob(job)" ><span>Clone!</span></a>
<!-- <button data-ng-click="cloneItem(food)" class="btn inline">Add</button> -->

</td>
</tr>

函数 cloneJob 是:

$scope.cloneJob = function (job){
var cloneJob = angular.extend(job);
location.href = '#/jobs/add';
}

这会输出很多 json(所有正确的数据),然后转到添加页面。

最佳答案

尝试类似的东西

<tr ng-repeat="whatever in whatevers"><button ng-click="duplicateItem(whatever)">duplicate</button></tr>

在 Controller 上:

$scope.duplicateItem = function(item){
$scope.duplicatedItem = angular.copy(item); //this will do a copy, not just assign a reference.
//if you need clean the duplicate item
delete $scope.somePropertyYouWannaClean;
}

最好能提供一个有效的示例 fiddle 或至少提供更多代码,这样我们才能为您提供更准确的答案。

编辑:

更简洁的方法是让克隆函数将信息加载到服务(或工厂单例)。然后在加载路线后,您使用该服务取回内容并使用它。

喜欢:

angular.module('some.namespace.factory', [])
.factory('CloneJobFactory', function () {
return {
job: null,
loadJob: function (job) {
var auxJob = angular.copy(job);//if you just need a shallow copy use angular.extend
this.job = this.cleanJob(auxJob);
},
getClonedJob: function(){
return this.job;
},
cleanJob: function(job) {
//code that cleans a job object that has been cloned
delete job.propertyYouDoNotWantToKeep;

return job;//return the cleaned job
}
};
});

然后 controller 中的 clone 函数(现在必须注入(inject)我们刚刚创建的 factory)只需 < em>包装 loadJob 方法:

$scope.cloneJob = function (job) {
CloneJobFactory.loadJob(job);
}

对于使用克隆数据的函数也是如此:

$scope.someFunction = function (whateverParams) {
var clonedJob = CloneJobFactory.getClonedJob();
//whatever you want
}

这仍然可以改进。

注意:Angular 单例用于在 Controller 、服务等之间共享信息等。

关于javascript - AngularJS 复制现有表格行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36446553/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com