3

试图转换这个

.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/$injector/unpr?p0=copeProvider%20%3C-%20%24scope%20%3C-%dataStorehttp://localhost:8100/lib/ionic /js/ionic.bundle.js:8762:12

4

1 回答 1

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;
})
于 2015-08-04T18:13:02.780 回答