从Firebase读取数据并将其添加到范围

时间:2014-06-16 16:35:39

标签: angularjs firebase angularfire

对于RSS应用程序,我想从Firebase中读取一组JSON对象(每个对象代表一个单独的feed的参数)。

如果没有Firebase,应用程序将根据声明

运行
$scope.rssSourcesTest = [
    {'aid': 'urlaub99euro', 'atitle': 'Urlaub99Euro', 'aurl': 'http://www.urlaub99euro.de/rss3b/', 'atags': 'deutschland'},
    {'aid': 'urlaub_fm', 'atitle': 'urlaub.fm', 'aurl': 'http://urlaub.fm/rss/', 'atags': ''}
    ];

将$ scope.rssSourcesTest编写到Firebase中。读回数组也有效,但我无法将结果数组rssSources2分配给范围变量,例如$ scope.rssSources2。

我在这里阅读了很多关于此的文章,解决方案可能是$ timeout或$ apply()。这是测试。

        // Test Read rssSources from Firebase ************************

    // Test Array
    $scope.rssSourcesTest = [
    {'aid': 'urlaub99euro', 'atitle': 'Urlaub99Euro', 'aurl': 'http://www.urlaub99euro.de/rss3b/', 'atags': 'deutschland'},
    {'aid': 'urlaub_fm', 'atitle': 'urlaub.fm', 'aurl': 'http://urlaub.fm/rss/', 'atags': ''}
    ];
    // console.log($scope.rssSourcesTest[0].aid);
    // works!

    // write
    var sourcesFB = new Firebase("https://xxxxxxxx.com/sourcestest");
    sourcesFB.set($scope.rssSources);
    // works

    // read
    var rssSourcesRef = new Firebase("https://xxxxxxxx.com/sourcestest/");
    rssSourcesRef.on('value', function(snap) {
            rssSources2 = snap.val();
            console.log("read from FB data ..: " + rssSources2[0].aid);
            // works
    });
    console.log($scope.rssSources2[0].aid);
    // is $scope.rssSources2 is undefined

    // /Test Read rssSources from Firebase ************************

1 个答案:

答案 0 :(得分:1)

$ scope.rssSources2和rssSources2是两个不同的变量。替换:

rssSources2 = snap.val();

使用:

$scope.rssSources2 = snap.val();