Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 具有参数值的函数_Angularjs_Firebase - Fatal编程技术网

Angularjs 具有参数值的函数

Angularjs 具有参数值的函数,angularjs,firebase,Angularjs,Firebase,我正在反复浏览一个类似这样的作业列表(为了演示而简化) 我可以非常轻松地从作业数组访问信息,如下所示(Job.Name、Job.Date等) 控制台输出正确数量的新消息(因此计数器和功能正常工作)。问题是,在实际的html视图中,它不会更新,我感觉它与Angular摘要有关(我不完全理解)。有时,当我从缓存访问页面时,它可以正常工作,但如果我进行硬刷新,它不会显示计数。您的问题是,只有在按角度解析dom时,或者在更新$scope.Jobs时(根对象,而不是子对象),才会运行函数$scope.ha

我正在反复浏览一个类似这样的
作业列表(为了演示而简化)

我可以非常轻松地从
作业
数组访问信息,如下所示(Job.Name、Job.Date等)


控制台输出正确数量的新消息(因此计数器和功能正常工作)。问题是,在实际的html视图中,它不会更新,我感觉它与Angular摘要有关(我不完全理解)。有时,当我从缓存访问页面时,它可以正常工作,但如果我进行硬刷新,它不会显示计数。

您的问题是,只有在按角度解析dom时,或者在更新
$scope.Jobs
时(根对象,而不是子对象),才会运行函数
$scope.hasNewCreatorMessages

为了解决您的问题,您应该在控制器中添加一个
$watch
,它将触发一个函数,该函数将更新
$scope
中的数组:

在控制器内部,当它实例化时,您可以执行以下操作:

$scope.arrayOfCounters = [];

for (var i = 0; i< $scope.Jobs.length; i++){
     $scope.arrayOfCounters.push(integerCalculatedByAFunction);
}
$scope.arrayOfCounters=[];
对于(变量i=0;i<$scope.Jobs.length;i++){
$scope.arrayOfCounters.push(integerCalculatedByAFunction);
}
然后,你为你的工作注册了一块手表

$scope.watchCollection('Jobs.something.messages', function(){
    //Update your array here

    //Do not $scope.arrayOfCounters = [];   <= this creates a new reference and the view wont be updated.
    // But do instead $scope.arrayOfCounters.length = 0;
});
$scope.watchCollection('Jobs.something.messages',function(){
//在此处更新您的阵列

//不要$scope.arrayOfCounters=[];这是一个相当混乱的局面。您在这里使用AngularFire吗?
$id
建议这样做。解释什么是作业以及如何创建作业的代码的其余部分在哪里。在这里提供任何有意义的建议将非常困难。请参阅。
$scope.arrayOfCounters = [];

for (var i = 0; i< $scope.Jobs.length; i++){
     $scope.arrayOfCounters.push(integerCalculatedByAFunction);
}
$scope.watchCollection('Jobs.something.messages', function(){
    //Update your array here

    //Do not $scope.arrayOfCounters = [];   <= this creates a new reference and the view wont be updated.
    // But do instead $scope.arrayOfCounters.length = 0;
});