filter $ scope错误:未知提供者:$ scopeProvider < - $ scope < - transformSensorStatusFilter

dyl*_*lan 19 javascript scope controller filter angularjs

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

});

在chrome中,我收到以下错误:

错误:未知提供者:$ scopeProvider < - $ scope < - transformSensorStatusFilter

Nik*_*los 61

$scope仅适用于控制器和指令的链接功能.这就是过滤器无法找到它的原因.也许你的意思$rootScope

  • **对观众的警告:**`$ rootScope`本质上是一个全球范围.留意这一事实的影响; 例如,来自`$ rootScope`的内部控制器的手表必须注意注销自己,否则可能会发生内存泄漏.因此,仅仅因为`$ rootScope`可用,它并不意味着继续并且不小心使用它. (14认同)