从异步函数返回值时遇到问题

时间:2015-06-21 11:01:28

标签: javascript angularjs firebase angularfire

所以我想从函数中获取一个使用Firebase的值。之后,我想在视图中使用此值。

My Angular功能:

    $scope.getCurrentIndex = function(companyName){
        var indexRef = new Firebase('https://xxxxx-stock.firebaseio.com/'+companyName);
        indexRef.on("value", function(Index){
            return Index.val()
        })
    };

我的FB看起来像:

apple
|_160

和HTML:

<div ng-init="Index = getCurrentIndex('apple')">
    <h2>Apple: {{Index}}</h2>
</div>

但是在视野中只有Apple:

1 个答案:

答案 0 :(得分:1)

您需要将$apply添加到异步回调中。 Doc link.

  

$ apply()用于从角度框架外部以角度执行表达式。 (例如,来自浏览器DOM事件,setTimeout,XHR或第三方库)。

此外,在ngRepeat之外使用ngInit被视为a bad practice,初始化控制器中的范围变量。

(function getCurrentIndex(companyName) {
    var indexRef = new Firebase('https://xxxxx-stock.firebaseio.com/' + companyName);
    indexRef.on("value", function(Index){
        $scope.Index = Index.val();
        $scope.$apply();
    });
})('Apple');