如何解决如何在 javascript 的循环中重用对象属性?
我试图在循环中重用对象属性。这是正确的方法吗?我总是收到未定义错误。我想使用的属性是“field_id”和“field_text”。我不确定是否应该将其定义为变量或字符串。
以下是我的完整代码:
var client_id = '',company_name = '',vacancy_category_id = '',category_name = '',user_id = '',full_name = '';
let select2El = {
params: [{
'id': '#client_id','url': '/consultant/vacancy/get-clients','field_id': client_id,'field_text': company_name,'success_response': $scope.clients
},{
'id': '#clone_client_id',{
'id': '#category_id','url': '/consultant/vacancy/get-categories','field_id': vacancy_category_id,'field_text': category_name,'success_response': $scope.categories
},{
'id': '#owner_id','url': '/consultant/vacancy/get-users-by-type','field_id': user_id,'field_text': full_name,'success_response': $scope.users
}]
}
for (var key in select2El.params) {
var sel = select2El.params[key];
angular.element(sel['id']).select2({
width: '100%',placeholder: '--Select--',ajax: {
url: sel['url'],dataType: 'json',data: function (params) {
return {
search: params.term,page: params.page || 1
}
},processResults: function (response,params) {
params.page = params.page || 1;
return {
results: response.data.map(function (res) {
console.log(res);
return { id: res.sel['field_id'],'text': res.sel['field_text'] }
}),pagination: {
more: (params.page * 10) < response.total
}
};
},success: function (response) {
sel['success_response'] = response.data;
}
}
});
}
循环对象属性的那一行是这样的:
return { id: res.sel['field_id'],'text': res.sel['field_text']
当我 console.log(res)
时,我得到了这些数据。
解决方法
发生这种情况是因为您的 res.sel
字段是 undefined
。据我了解,您希望 field_id
中存储的对象的值 field_text
和 select2El.params
。
试试下面的代码-
var client_id = '',company_name = '',vacancy_category_id = '',category_name = '',user_id = '',full_name = '';
let select2El = {
params: [{
'id': '#client_id','url': '/consultant/vacancy/get-clients','field_id': client_id,'field_text': company_name,'success_response': $scope.clients
},{
'id': '#clone_client_id',{
'id': '#category_id','url': '/consultant/vacancy/get-categories','field_id': vacancy_category_id,'field_text': category_name,'success_response': $scope.categories
},{
'id': '#owner_id','url': '/consultant/vacancy/get-users-by-type','field_id': user_id,'field_text': full_name,'success_response': $scope.users
}]
}
for (let key in select2El.params) {
let sel = select2El.params[key];
angular.element(sel['id']).select2({
width: '100%',placeholder: '--Select--',ajax: {
url: sel['url'],dataType: 'json',data: function (params) {
return {
search: params.term,page: params.page || 1
}
},processResults: function (response,params) {
params.page = params.page || 1;
return {
results: response.data.map(function (res,index) {
console.log(res);
return { id: sel['field_id'],'text': sel['field_text'] }
}),pagination: {
more: (params.page * 10) < response.total
}
};
},success: function (response) {
sel['success_response'] = response.data;
}
}
});
}
我在 index
中使用 .map
从原始对象中获取 field_text
和 field_id
的值
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。