2017-11-16 4 views
1

私はAngularJSコントローラの異なるインスタンス間でデータを渡すためにサービスを利用しています。私はこれが最良の方法ではないことを知っていますが、私の場合に合った方法です。問題は、そのサービスからデータを取得できないことです。anglejsでサービスを利用できない

var app = angular.module('MovieApp', ['ngResource']); 

app.factory('factMovies', function($resource) { //this returns some movies from MongoDB 
    return $resource('/movies'); 
}); 

app.service('SnapshotService', function(factMovies) { 
    //this is used to pass data to different instances of the same controller 
    //omitted getters/setters 
    this.snapshots = []; 

    this.init = function() { 
    var ctrl = this; 
    var resp = factMovies.query({}, function() { 
     if (resp.error) { 
     console.log(resp.error) 
     } else { 
     tempDataset = [] 
     //do stuff and put the results in tempDataset 
     ctrl.snapshots.push(tempDataset); 
     console.log(tempDataset); //prints fine 
     return tempDataset; 
     } 
    }); 
    }; 
}); 

app.controller('TileController', function(SnapshotService) { 
    this.dataset = []; 
    this.filters = []; 
    this.init = function() { 
    var ctrl = this; 
    var data = SnapshotService.init(function() { 
     console.log(ctrl.data); //doesn't even get to the callback function 
    }); 
    }; 
}); 

私は本当に私が間違ってやっているかを把握することはできません。..

答えて

1

SnapshotService.init()は、任意のパラメータを取りません - あなたはTileControllerSnapshotService.init()コールで渡す匿名関数は何もしないという意味します。あなたがする必要がどのような


init関数定義にパラメータを追加し、コードでそれを呼び出すことです:

app.service('SnapshotService', function(factMovies) { 
    //this is used to pass data to different instances of the same controller 
    //omitted getters/setters 
    this.snapshots = []; 

    this.init = function(cb) { 
    var ctrl = this; 
    var resp = factMovies.query({}, function() { 
     if (resp.error) { 
     console.log(resp.error) 
     } else { 
     tempDataset = [] 
     //do stuff and put the results in tempDataset 
     ctrl.snapshots.push(tempDataset); 
     console.log(tempDataset); //prints fine 
     cb(ctrl.snapshots); 
     } 
    }); 
    }; 
}); 
+0

は、あなたの答えをありがとう、それは私が私が知っていた方法を少し理解して作られましたコールバック関数。私は宿題を終えて今すぐ働くことができました! –

関連する問題