无法设置“”的属性;某事“;在尝试创建按日期排序的数组时出现未定义错误
Cannot set property of "something" of undefined error while trying to create an array sorted by dates.
我在Stack Overflow上发布了一个相关问题,@Kato帮我给出了答案。我正试图实现他的答案,但得到了一个错误Cannot set property of"something"of undefined。
我做了一个尽可能详细的plnkr:http://plnkr.co/edit/M4zEjpZ4kqTKn1sHHMt6
//controller
angular.module('app').controller('DemoCtrl', function($scope, DatedList) {
$scope.world = 'world';
var listRef = new Firebase("https://talllly.firebaseio.com/");
$scope.weeks = DatedList(listRef);
$scope.addTask = function(){
listRef.push({
text: $scope.task.text,
week: 40,
day: 2
});
};
});
angular.module('app').service('DatedList', function($timeout) {
return function(pathToList) {
var list = {};
pathToList.on('child_added', function(snap) {
$timeout(function() { // force Angular to run $digest when changes occur
var data = snap.val();
console.log(data);
var week_number = data.week;
var week_day = data.day;
list[week_number][week_day] = data;
});
});
//todo: write similar processing for child_changed and child_removed
return list;
}
});
//html
<form ng-submit="addTask()">
<input placeholder="add task" ng-model="task.text">
</form>
<div ng-repeat="(week, days) in weeks">
<h1>{{week}}</h1>
<div ng-repeat="(day, items) in days">
<h2>{{day}}</h2>
<div ng-repeat="item in items">
{{item|json}}
</div>
</div>
</div>
您需要初始化list[week_number]
:
pathToList.on('child_added', function(snap) {
$timeout(function() { // force Angular to run $digest when changes occur
var data = snap.val();
console.log(data);
var week_number = data.week;
var week_day = data.day;
list[week_number] = {}; // <- Add this line here
list[week_number][week_day] = data;
});
});
出现该错误的原因是,您正试图将一个属性添加到列表[week_num]中,但它不是对象。
你可以做
list[week_number] = list[week_number] || {};
list[week_number][week_day] = data;
或
if(!angular.isObject(list[week_number]) {
list[week_number] = {};
}
list[week_number][week_day] = data;
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- Javascript中的多维数组排序索引问题
- 如何按日期对Javascript对象数组排序
- 数组排序后显示更改
- 当许多元素相等时,Javascript数组排序无法正常工作
- Javascript数组排序速度受字符串长度的影响
- 按唯一键将对象数组排序为数组
- 以 js 为单位的数组排序
- js 数组排序无法正常工作
- 数组排序.论点从何而来
- 不需要的数组排序
- 数组排序不正确/不可预测,使用 indexOf 时
- Javascript将数组排序到树中
- 随后的多维数组排序会产生意外的结果
- 数组排序基于纯javascript搜索文本匹配
- Javascript自定义数组按数组排序
- 使用字符串按属性错误对对象进行数组排序
- 多维数组排序
- JavaScript与PHP在数组排序中的对比
- Javascript-关联数组排序