运行函数后使$ scope可用?

时间:2014-09-27 04:06:57

标签: javascript angularjs firebase angularfire

更新:问题几乎*修复。当我使用如下所示的$ watch时,我可以获得更新的周数范围,但是如果没有刷新,任务就不会显示在视图中。

scope.$watch(function(){
    return scope.list;
  },updateList);

 function updateList() {
        scope.list.$loaded().then(function(){
         scope.weeks = sortItems(parseItems(scope.list));
        });
      }

使用之前的$ watch,任务在视图中实时更新,但我无法在周范围之间转换。

scope.list.$watch(updateList);

同时使用两者“一切正常”......但这不可能是正确的。

更新:我有一个无关的错误,导致我误解了这里的实际问题。当$ asArray()列表被创建并附加到函数内部的$ scope时,并不是$ scope不可用 - 实际问题是当我用新参数重新运行该函数时,$ scope不会更新参数。

更新:我目前正在尝试将populateTasks功能移动到服务中。目前还不清楚我应该在哪里设置,更新和更改startAt和endAt ref。将这些值保留在服务中,然后在控制器中触发,以便它们再次更新服务?这里的任何建议将不胜感激。

这是我从控制器运行的功能:

 var populateTasks = function(start, end){
      console.log(this does run multiple times but the $scope does not update);
      $scope.start = start;
      $scope.end = end;
      var ref = new Firebase('https://plnkr.firebaseio.com/tasks').startAt(start).endAt(end);
      var list = $firebase(ref).$asArray();
      $scope.list = list; 
    };  

当我第一次运行它时,会创建$ scope.list并在其中包含一系列任务。当我通过传入新的(开始,结束)参数再次运行它时,范围不会改变。

如果我尝试运行$ scope。$ apply()我收到一条错误,指出“错误:[$ rootScope:inprog] $已经在申请中”

这是最新的plnkr:http://plnkr.co/edit/0EdLH3gGoUrWcQkOeukt

在上面的plnkr中,我删除了隔离范围,并将指令内容移到了templateUrl之外。这没有用。

0 个答案:

没有答案