我有一個彈出式屏幕,用戶需要從兩個下拉列表中進行選擇。 選擇完成後,我將選擇返回到服務並將它們保存在一個對象中。
app.service('OriginalService', [ '$modal',
function ($modal) {
var that = this;
this.filtersMananger = { // my-ng-models for the two drop-down-lists
firstFilter: "",
secondFilter: ""
};
this.openDialog = function(){
var modalInstance = $modal.open({
templateUrl: 'ModalScreen.html',
controller: 'ModalController',
resolve: {
filtersManagerObject: function() {
return that.filtersMananger;
}
}
});
modalInstance.result.then(function (filtersMananger) {
that.filtersMananger.firstFilter = filtersMananger.selectedFirstFilter;
that.filtersMananger.secondFilter = filtersMananger.selectedSecondFilter;
}, function() {
});
};
}
]);
的彈出HTML:
<div class="data-filters-container">
<div class="data-filter">
<label for="filter-data-drop-down">FIRST FILTER</label>
<select name="filterDataDropDown" ng-model="filtersMananger.selectedFirstFilter" ng-options="filter.value as filter.name for filter in filterDropDownItems"></select>
</div>
<div class="data-filter col-xs-4">
<label for="filter-data-drop-down">SECOND FILTER</label>
<select name="filterDataDropDown" ng-model="filtersMananger.selectedSecondFilter" ng-options="filter.value as filter.name for filter in filterDropDownItems"></select>
</div>
但是,這種變化是很重要的,我有打電話給哪知道許多其他服務,向他們發送有關此更改的信息提供給控制器。
爲了做到這一點,我用一個控制器中的手錶功能:
$scope.$watch('OriginalService.filtersMananger.firstFilter + OriginalService.filtersMananger.secondFilter', function (newVal, oldVal) {
if (newVal !== oldVal) {
DO SOME LOGIC
}
});
我的newval和OLDVAL之間比較,因爲當應用程序被上傳稱爲事件,我們進入到這個功能。
問題是newVal只包含secondVariable的值。 是否有任何想法爲什麼newVal不包含也是第一個變量?
您可以在這裏添加您的UI下拉綁定代碼,以查看它是否與firstVariable存在綁定問題。 – 2014-10-10 07:40:14
我添加了完整的示例:) – Aviade 2014-10-10 07:51:41