2015-04-23 61 views
0

民间服务的对象:撷取来自还未被创建

我有2个控制器,CTRLA和CTRLB - 两个相互无关的,但在同一页内。

ctrlA查询结束点并返回一个json对象tags,然后将其传递给服务方法MyService.saveTags(tags)来存储该对象。

ctrlB则需要通过获取经由ctrlA创建的tags对象来填充$范围可变$scope.tags

服务:

.factory('MyService', function($http, $q, $window) { 
    var myserviceFactory = {}; 
    var savedTags = {}; 

// ..other methods.. 

    myserviceFactory.saveTags = function(tags) { 
    if(!savedTags.tags){ 
     console.log('saving tags..'); 
     savedTags.tags = tags; 
    } 
    }; 

    myserviceFactory.getSavedTags = function() { 
    console.log('returning tags..'); 
    return savedTags.tags; 
    }; 

    return myserviceFactory; 
}) 

这个问题似乎是ctrlB被首先调用,所以当$scope.savedTags = MyService.getSavedTags();运行时,它返回undefined。

问题:角度n00b在这里 - 在ctrlA填充对象之后获取标签的最佳方式是什么?

回答

1

您可以在ctrlBgetSavedTags服务方法中使用手表,以了解它何时填充。像

$scope.$watch(function() { return MyService.getSavedTags() },function(newValue) { 
    if(newValue) { 
     $scope.savedTags = newValue; 
    } 
}); 
+0

完美,作品的魅力! – williamsowen