Я создал переменную rootScope, например
$rootScope.globalData = data;
$rootScope.globalData.chillerConditions.HeatSource.Value = "ST"; //Default Value
$scope.chillerConditions.HeatSource.Value = 1; //Default Value
где data
— мое возвращаемое значение из API. Также создайте переменную области видимости, которая представляет собой объект, содержащий список элементов.
$scope.chillerAttributes = data.ObjCandidateListChillerAttributes;
$scope.chillerConditions = data.ObjCandidateListConditions;
В HTML у меня есть:
<select ng-model="chillerConditions.HeatSource.Value" style="width:53%;" ng-options="item.Id as item.Description for item in ValidRatingHeatSource" ng-change="heatSourceChanged()" id="ddRatingHeatSource" class="form-control search-select designComboboxHeight" data-container="body"></select>
Здесь ValidRatingHeatSource
$scope.ValidRatingHeatSource = \*list of items*\
При изменении Drop Down я написал функцию. В этом
if($scope.chillerConditions.HeatSource.Value == 2)
{
$rootScope.globalData.chillerConditions.HeatSource.Value = "HW";
}
else
{
$rootScope.globalData.chillerConditions.HeatSource.Value = "ST";
}
До сих пор был мой текущий код. Проблема:
Когда вышеупомянутая функция вызывается, то всякий раз, когда текущая переменная $rootScope
, т. е. $rootScope.globalData.chillerConditions.HeatSource.Value
, изменяется на "HW"
или "ST"
, она также изменяет $scope.chillerConditions.HeatSource.Value
на "HW"
или "ST"
.
Почему так?
Есть ли встроенная функциональность в angularjs? Пожалуйста, предложите, если я делаю какую-либо ошибку? Новые предложения также приветствуются.
ng-model
(chillerConditions.HeatSource.Value
) присоединен как к$scope.chillerConditions.HeatSource.Value
, так и к$rootScope.chillerConditions.HeatSource.Value
. Поэтому, когда выбор изменяется, меняется и переменная, прикрепленная кng-model
. Не уверен в этом, но, возможно, стоит попробовать переименовать переменную$scope
. - person simeg   schedule 29.12.2014