2016-07-04 3 views
0

моя часовая группа не работает, это дает мне неопределенное, я делаю что-то не так в своем коде?

$scope.$watchGroup([vm.footer.nrRows, vm.isSaved], function(current, original) { 

      console.log("Nr Rows "+current[0]); 
      console.log("is saved? "+current[1]); 
     }); 
+1

Вам просто нужно положить его переменные как 'String'. – developer033

+0

Можете ли вы взглянуть на мой ответ? http://stackoverflow.com/questions/38187883/multiple-variables-using-watchgroup/38188124#38188124 – developer033

ответ

1

Измените код следующим образом:

$scope.$watchGroup(["vm.footer.nrRows", "vm.isSaved"], function() { 
    ... 
}, true); 

Если переменная $scope.something вы должны положить в $ смотреть, как "something"

+0

Я только что внес изменения, и он работает, когда он впервые загружен, но после того, как он просто перестает смотреть, я продолжаю изменять значение и наблюдатель не работает. –

+0

@MarcoPereira Проверьте обновленный ответ. передать «true» для второго параметра. –

+0

Да, я добавил этот параметр также, но подоконник не смотрит –

0

Вот фрагмент рабочего:

var app = angular.module('app', []); 
 

 
app.controller('mainCtrl', function ($scope) { 
 
    $scope.footer = {}; 
 
    $scope.footer.nrRows = 5; 
 
    $scope.isSaved = true; 
 
    $scope.$watchGroup(['footer.nrRows', 'isSaved'], function(newValues, oldValues, scope) { 
 
    console.log(oldValues); 
 
    console.log(newValues); 
 
    }); 
 
});
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
<head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script>  
 
</head> 
 

 
<body ng-controller="mainCtrl"> 
 
    <input ng-model="footer.nrRows" /> 
 
    <span ng-bind="footer.nrRows"></span> 
 
    <hr /> 
 
    <input ng-model="isSaved" /> 
 
    <span ng-bind="isSaved"></span> 
 
</body> 
 

 
</html>

0

Я нашел это решение, но все же не могу понять, какая разница была достигнута по сравнению с другими решениями выше, только это решение выше работало для меня. Надеюсь, что кто-то объяснит мне, почему.

Решение:

$scope.$watchGroup([ 
      function(){ 
       return vm.footer.nrRows; 
      }, function(){ 
       return vm.isSaved; 
      } 
     ], function(newValues, oldValues){ 
      var newProp1 = newValues[0]; 
      var newProp2 = newValues[1]; 
      console.log("newProp1"); 
      console.log(newProp1); 
      console.log("newProp2"); 
      console.log(newProp2); 
     }); 
+0

Что происходит, когда вы пытаетесь решить мое решение? – developer033

Смежные вопросы