У меня есть factory('CriteriaSelector')
→ (класс CriteriaSelector) с selectedValues = []
переменной- 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
Пожалуйста помоги.
Делая это так, значение будет инициализироваться (при инициализации контроллера) и не сможет измениться. Если вы хотите обновить значение, вы должны использовать метод.
На вашем заводе это будет примерно так:
yourFactory.getSelectedValues = function(){
return selectedValues;
}
yourFactory.setSelectedValues = function(values){
selectedValues = values;
}
Например, с помощью getter вы можете выполнить привязку данных:
$scope.getSelectedValues = $scope.criteriaSelector.getSelectedValues
Здесь вы не помещаете ( )
. Подобно этому, вы будете соответствовать функции, а не значению. После этого вы сможете получить данные на своем DOM:
{{getSelectedValues() }}
И здесь ваши данные будут обновляться при любых изменениях.