我有一个factory('CriteriaSelector')
->(一个类CriteriaSelector)与成员变量selectedValues = []
(一个数组)。我试图引用这个范围如下:
// in controller
$scope.criteriaSelector = new CriteriaSelector();
$scope.selectedValues = $scope.criteriaSelector.selectedValues;
//The above code according to me should point to the same array.
我想要一个行为,如果$scope.criteriaSelector.selectedValues
得到更新,那么它应该反映在$scope.selectedValues
,反之亦然。
但问题是我没有看到这个变化反映在$scope.selectedValues
请帮。
通过这样做,该值将被初始化(在控制器init上)并且无法更改。如果你想要一个更新的值,你必须使用method.
在您的工厂中,它将是这样的:
yourFactory.getSelectedValues = function(){
return selectedValues;
}
yourFactory.setSelectedValues = function(values){
selectedValues = values;
}
和getter一起,例如,你可以做数据绑定:
$scope.getSelectedValues = $scope.criteriaSelector.getSelectedValues
这里不放( )
。像这样,您将匹配函数而不是值。您将能够像这样在DOM上获取数据:
{{getSelectedValues() }}
在这里,您的数据将在任何更改时刷新。