Базовая фильтрация в угловых - PullRequest
0 голосов
/ 12 ноября 2018

Новичок здесь, пожалуйста, будьте нежны. У меня проблемы с фильтрами Angular при использовании привязанного к данным значения

<!DOCTYPE html>
<html>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
    <body>
        <div ng-app="myApp" ng-controller="myCtrl">

            Insert value to be converted to hexdecimal: <input type="text" ng-model="whatever">

            <h1>{{ whatever }}</h1>

        </div>

        <p>A custom service with a method that converts a given number into a hexadecimal number.</p>

        <script>
            var app = angular.module('myApp', []);

            app.service('hexafy', function(x) {
                this.myFunc = function (x) {
                    return x.toString(16);
                }
            });
            app.controller('myCtrl', function($scope) {

            });
            app.filter('myFormat',['hexafy', function(hexafy) {
                return function(x) {
                    return hexafy.myFunc(x);
                };
            }]);
        </script>

    </body>
</html>

У меня проблема со следующей строкой кода:

<h1>{{ foo | myFormat }}</h1>

Почему это не работает как задумано?

Это работает:

<h1>{{ 255 | myFormat }}</h1>

Это также работает:

<h1>{{ foo }}</h1>

Почему не работает сочетание двух? Как мне заставить это работать правильно? Заранее спасибо.

1 Ответ

0 голосов
/ 12 ноября 2018

Ручка undefined проверка значения в пользовательском фильтре.Значение foo не определено, и вы звоните toString для этого в службе hexafy.

Обновленный код фильтра

app.filter('myFormat',['hexafy', function(hexafy) {
                return function(x) {
                    if(!x){
                       return x;
                     }
                    return hexafy.myFunc(x);
                };
            }]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...