javascript - 如何在 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',
'url': '/consultant/vacancy/get-clients',
'field_id': client_id,
'field_text': company_name,
'success_response': $scope.clients
}, {
'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;
}
}
});
}
object 属性被循环的行是这样的:
return { id: res.sel['field_id'], 'text': res.sel['field_text']
解决方案
发生这种情况是因为您的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',
'url': '/consultant/vacancy/get-clients',
'field_id': client_id,
'field_text': company_name,
'success_response': $scope.clients
}, {
'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
来自原始对象的值
推荐阅读
- python - 如何在通过 pymqi 向 IBM MQ 发送消息时设置 JMS 属性
- c++ - C ++中的右移布尔值
- android - 如何使 Tablayout 也可滚动
- css - 带有 IE11 的 CSS 网格
- javascript - 将特殊的 HTML 字符插入 XML
- laravel - 有没有办法知道命令是手动触发还是从调度程序触发的?
- node.js - 如何修复此节点控制器功能并从 2 个不同模型发送数据?
- unity3d - 有没有办法读取围绕局部轴的旋转?
- python-3.x - Why my console application is buffering log and socket messages?
- php - 如何根据 IIS windows 身份验证过滤 ldap 活动目录用户信息并在 php 网站中显示该信息?