将$ watch用于两个变量angularjs

阿维亚德

我有一个弹出屏幕,用户需要在其中从两个下拉列表中进行选择。选择完成后,我将选择返回到服务中并将其保存在一个对象中。

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不同时包含第一个变量吗?

穆罕默德·塞帕万德(Mohammad Sepahvand)

用途$watchCollection

$scope.$watchCollection('[serviceName.Object.firstVariable,serviceName.Object.secondVariable]', function (newValues, oldValues) {

});

或者,如果您使用的是angular 1.3,请使用$watchGroup

$scope.$watchGroup(['serviceName.Object.firstVariable','serviceName.Object.secondVariable'],function(newValues, oldValues){

})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将rmvnorm和dmvnorm用于两个变量

来自分类Dev

将两个自变量的函数应用于两个矩阵

来自分类Dev

如何将转换方法应用于熊猫中的两个变量?

来自分类Dev

打字稿:尝试将两个变量相加,但将两个变量串联

来自分类Dev

将两个变量合并为新变量

来自分类Dev

R:将变量级别分为两个变量

来自分类Dev

将两个变量合并为一个

来自分类Dev

将两个变量存储到localStorage时如何连接两个变量?

来自分类Dev

将功能应用于两个列表?

来自分类Dev

将函数应用于向量的两个元素

来自分类Dev

将两个函数应用于元组列表

来自分类Dev

如何将两个放大器同时用于两个散布图?

来自分类Dev

将值分为两个不同的变量

来自分类Dev

将两个SQL表与where变量组合

来自分类Dev

WPF将两个变量绑定到边距

来自分类Dev

将两个$ _GET变量拆分为路径

来自分类Dev

将WordPress标题设置为两个单独的变量

来自分类Dev

将两个嵌套的小齿变量相乘

来自分类Dev

将限制存储为两个变量

来自分类Dev

使用for循环将键值对分为两个变量

来自分类Dev

将 Javascript 变量附加到两个 HTML 链接

来自分类Dev

Javascript:将输入放在两个变量之间并输出

来自分类Dev

将输出拆分为两个变量

来自分类Dev

将变量除以两个值并仍返回两个值

来自分类Dev

如何将两个连续的输入分配给两个不同的变量?

来自分类Dev

如何同时将两个不同的值分配给两个变量

来自分类Dev

将两个字符串分隔为两个变量

来自分类Dev

通过R中的多个条件将一个变量转换为两个变量

来自分类Dev

将两个变量的函数写成一个变量中的函数