将数组传递给函数或确保它在范围内
Pass array to function or make sure it is within scope?
我正在尝试使用 onclick 函数对数组进行排序,但出现错误 obj 未定义。也许它不在范围内?
js 文件:
function pageLoad() {
var url = API_URL + "/api/Ticket/GetTickets";
var data = Ajax.getData(url);
var obj = [];
var tickets = JSON.parse(data.JsonResult);
obj.Tickets = tickets;
Tickets.Data = obj;
var viewModel = {
theObject: [obj.Tickets]
};
ko.applyBindings(viewModel);
}
function SortColumn(column) {
obj.Tickets.column.sort();
}
是的,这是一个范围界定问题。 将obj
声明移到函数之外,这样它对两个函数都可见。
像这样:
var obj = []; // <-- move here
function pageLoad() {
var url = API_URL + "/api/Ticket/GetTickets";
var data = Ajax.getData(url);
var tickets = JSON.parse(data.JsonResult);
obj.Tickets = tickets;
Tickets.Data = obj;
var viewModel = {
theObject: [obj.Tickets]
};
ko.applyBindings(viewModel);
}
function SortColumn(column) {
obj.Tickets.column.sort();
}
编辑:
我不确定您是否知道,但[]
是数组的简写。如果您尝试创建的是对象,则应将分配更改为var obj = {};
当然obj
不在范围内。它不在全局范围内,您不会将其传递到函数中.
您可以使用@smaili的答案作为修复,也可以obj
传递给函数。
function sortColumn(obj, column) {
obj.Tickets.column.sort();
return obj;
}
然后,您将使用两个参数调用它。
var sortedObj = sortColumn(obj, column);
Javascript中作用域的进一步解释
相关文章:
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 如何使用D3生成特定范围内的随机颜色
- 将自定义css保持在角度范围内
- Angular JS-文本框未在独立范围内更新
- cookie不在网站范围内
- 获取给定JavaScript范围内的解析函数
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- JavaScript-仅验证数值并且在范围内
- JS:从数组中查找特定范围内的最低/最高数字
- 试图检查表单中的值是否为一个设定范围内的数字
- 在十进制范围内搜索
- 基于日期范围的一组日期范围内的天数
- 如何在 Google 应用脚本中 sendEmail 函数的范围内的唯一非空白列中返回值
- 将数组传递给函数或确保它在范围内
- socket.io 客户端是否必须存在于全局范围内
- 查找某个日期范围内的可用天数
- 网站范围内jQuery/javascript选择器的最佳实践
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- JS日期对象在某个范围内的百分比
- 生成时间戳日期|Javascript范围内的空数据