使用ngStorage作为离子数组

时间:2015-08-04 18:01:57

标签: angularjs cordova ionic ng-storage

尝试转换此

.service('dataStore', function($localStorage,$scope){
    this.entfeeds=[];
    this.topfeeds=[];
    this.intfeeds=[];
})
.controller('GenFeedCtrl', function ($scope,....
     $scope.feeds = FeedList.get(feedSources, dataStore.topfeeds);

哪个有效,除了在手机上运行时,它只返回两个项目

所以我尝试使用ngStorage来存储数组

.service('dataStore', function($localStorage,$scope){
    $scope.$storage = $localStorage.$default({
        etf:[],
        tpf:[],
        itf:[]
    });

    this.entfeeds=$storage.etf;
    this.topfeeds=$storage.tpf;
    this.intfeeds=$storage.itf;})

    .controller('GenFeedCtrl', function ($scope,....
     $scope.feeds = FeedList.get(feedSources, dataStore.topfeeds);

但不使用浏览器emu,会出现以下错误

Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope <-     dataStore

http://errors.angularjs.org/1.3.13/ $注射器/ unpr?P0 = copeProvider%20%3 C-%20%24scope%20%3 C-%DATASTORE     在http://localhost:8100/lib/ionic/js/ionic.bundle.js:8762:12

1 个答案:

答案 0 :(得分:4)

服务中没有$scope。仅在视图相关组件中需要$scope,并且服务与视图没有任何关联。

$rootScope可以注入服务,但不适合存储数据。它更常用于广播事件的服务

您可以使用变量来定义不需要直接绑定到this

的内容
.service('dataStore', function($localStorage){
    var $storage = $localStorage.$default({
        etf:[],
        tpf:[],
        itf:[]
    });

    this.entfeeds=$storage.etf;
    this.topfeeds=$storage.tpf;
    this.intfeeds=$storage.itf;
})