2016-03-08 103 views
0

我是新来的JavaScript,所以我不知道如何来创建对象一旦有了动态值,所以下面的代码,我从dataItemfullNameworkerKey现在我要创建的对象selectedOwnersfullNameworkerKey值。一旦我们有了值,我该如何创建对象?

我该如何实现该任务?

ctrl.js

var selectedOwners = {}; 
    $scope.addProcessOwner = function(dataItem){ 
    var fullName = dataItem.fullName; 
    var workerKey = dataItem.workerKey; 
    console.log('WORKER KEY', workerKey); 
    } 
+0

可能帮助你http://stackoverflow.com/questions/32470928/angular-formly-adding-form-fields-dynamically-on-user-click/35603088#35603088 –

回答

0

编辑,按照注释:

var list = []; 
$scope.addProcessOwner = function(dataItem){ 
     var selectedOwners = {"fullname":dataItem.fullName,"workerKey":dataItem.workerKey}; 
    list.push(selectedOwners); 
    } 

// use list to populate output 
+0

对于它的价值,你不必引用对象键。例如:'{fullName:dataItem.fullName,workerKey:dataItem.workerKey}'。 –

+0

而'Object.assign'会从'dataItem'拷贝* everything *,而不仅仅是选中的属性。 –

+0

感谢您的答案是好方法后来我必须将workeyKey分配给表单字段'$ scope.processDTO.processOwnerWorkerKey'和fullName以'$ scope.processDTO.prcsOwner'它将会有多个选择的所有者 – hussain

1

您使用对象初始化

selectedOwners = { 
    fullName: dataItem.fullName, 
    workerKey: dataItem.workerKey 
}; 

对象初始化是{...}位。其中的两件东西都是属性初始值设定程序:之前的部分是名称,后面的部分是值,可以是任何表达式的结果。

在你的代码中,你会已经创建了对象(var selectedItem = {};)。上面的代码将替换为那个对象。如果你只是想添加到它,你只需要使用分配:

selectedItem.fullName = dataItem.fullName; 
selectedItem.workerKey = dataItem.workerKey; 

使用哪种取决于是否重要,你不能创建一个新的对象。

0

您已经创建了该对象,因此您只需将值添加到该对象中即可。

var selectedOwners = {}; 
    $scope.addProcessOwner = function(dataItem){ 
     selectedOwners.fullName = dataItem.fullName; 
     selectedOwners.workerKey = dataItem.workerKey; 
     //This will print out the newly populated object 
     console.log(selectedOwners); 
    } 
+1

该代码不会*添加*值到OP创建的对象。它创建一个* new *对象。 –

+0

编辑它以考虑您所陈述的内容。意识到你是正确的,它会重新创建对象,而不是实际将值添加到已创建的对象 – Joffutt4

相关问题