javascript - 类型错误 : Cannot read property 'unshift' of undefined AngularJS

标签 javascript angularjs local-storage ng-storage

我正在使用 ngStorage (localStorage) 开发这个新的 AngularJS 项目,但不太确定为什么会收到下面的消息。每当我单击“添加”按钮时,我都会收到此消息。

TypeError: Cannot read property 'unshift' of undefined AngularJS

下面是我的代码。有人可以解释为什么会发生这个错误吗?

.factory ('StorageService', function($localStorage) {

$localStorage = $localStorage.$default({
  favorites: []
});

var _getAll = function () {
  return $localStorage.favorites;
}; 

var _add = function (color) {
  $localStorage.favorites.unshift(color);
}
var _remove = function (color) {
  $localStorage.favorites.splice(index, 1);
}
return {
   getAll: _getAll,
    add: _add,
    remove: _remove
  };
})

Controller

.controller('HomeCtrl', function($scope, $localStorage, dataService, StorageService) {

    $scope.add = function (color) {
        StorageService.add(StorageService.favorites.unshift(dataService.colors.indexOf(color)));
        console.log(color);
      };
)};

最佳答案

您到底想用 Controller 中的线路来完成什么:

StorageService.add(StorageService.favorites.unshift(dataService.colors.indexOf(color)));

我假设您想要调用服务的 add 方法并向其传递 dataServicecolor 的值。

正如其他答案中提到的,您的错误来自于您的服务的返回 block 中未定义favorites。但如果您确实定义了它,您仍然不会添加颜色,因为 unshift 将返回 StorageService.favorites 的新长度。

如果我的假设是正确的,你可能会想做类似的事情:

StorageService.add(dataService.colors.indexOf(color));

如果您确实需要从服务中“获取”收藏夹,请不要通过发布 $localStorage.favorites 来破坏封装,而是使用 getAll 方法来获取“收藏夹”。

附注另外,不要忘记检查 dataService 是否确实有一个颜色键,或者您是否有另一个潜在的空指针。

关于javascript - 类型错误 : Cannot read property 'unshift' of undefined AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37262401/

相关文章:

security - 移动设备的 HTML5 本地存储有多安全

javascript - 使用 JavaScript 登录 Netflix 网站

javascript - 安装 npm 包 weexpack 时校验和验证失败

javascript - NodeJs的 "Child Process"如何与事件循环交互?

javascript - 使用 AngularJs 扩展表格中的中间行

javascript - Chromium localStorage 未显示在开发人员工具中

javascript - Angular 7 Guard 重定向仅适用于双击

javascript - jQuery 查找父标签

javascript - 在单页网站中排列不同 View 的最佳方式

javascript - 在 AngularJS 中将键值插入数组时出现 “.push is not a function” 错误