2013-10-11 19 views
18
marsApp.filter("transformSensorStatus", function($scope) { 
    return function(input, options) { 

    var sensorReading = (input ? (input/1000) : 0); 
    var sensorLowLimit = (options["lowLimit"] ? (options["lowLimit"]/1000) : 0); 
    var sensorHighLimit = (options["highLimit"] ? (options["highLimit"]/1000) : 0); 
    var curStat; 
    switch (sensorReading) { 
     case 255: 
     case 254: 
     case 253: 
      curStat = generateStateInnerHtml(sensorReading); 
      break; 
     default: 
      curStat = generateStateInnerHtml(options["sensorStatus"]); 

    } 

    return curStat; 


    function generateStateInnerHtml(state) { 

     var stateHtml = null; 

     if (state == 255 || state == 254) { 
      stateHtml = "a"; 
      $scope.sensorStateColor=''; 
      return state_html; 
     } 
     if (state == 253) { 
      stateHtml = "b"; 
      $scope.sensorStateColor="text-warning"; 
      return state_html; 
     } 
     if (state >= 0x20) { 
      stateHtml = "c"; 
      $scope.sensorStateColor="text-error"; 
      return stateHtml; 
     } 
     if (state >= 0x02) { 
      stateHtml = "d"; 
      $scope.sensorStateColor="text-error"; 
      return stateHtml; 
     } 
     if (state == 0x01) { 
      stateHtml = "e"; 
      $scope.sensorStateColor="text-success"; 
      return stateHtml; 
     } 
     stateHtml = "N/A"; 
     return stateHtml; 
    } 
} 

});

Error: Unknown provider: $scopeProvider <- $scope <- transformSensorStatusFilter

cevap

55

$scope sadece kontrolörler ve direktifler bağlantı fonksiyonu için kullanılabilir:

krom, aşağıdaki hatayı alıyorum. Bu yüzden filtre bulamıyor. Belki $rootScope mu demek istediniz?

+0

yep, $ rootScope kullanılabilir. – dylan

+13

** İZLEYİCİLERE UYARI: ** '$ rootScope' aslında küresel bir kapsamdır. Bu gerçeğin sonuçlarına dikkat edin; Örneğin. '$ rootScope' üzerindeki bir iç denetleyiciden saatler kendilerini kaydettirmeye dikkat etmeli veya bellek sızıntıları meydana gelebilir. Yani, sadece '$ rootScope' kullanılabilir olduğu için, devam etmek ve dikkatsizce kullanmak anlamına gelmez. –

+0

Teşekkürler, hala Angular 1.6.3 ile faydalı bir cevap! – zaphodb

1

"Bu" öğesinin yerel $ kapsamını (filtre işlevi içinde) belirteceğini buldum. Bunun güvenli bir şekilde erişilip erişilmediğinden emin değilsiniz.