Как передать значение в функцию связи угловой директивы

Дорогие все у меня директива

function percentview($compile) {
    var linker = function (scope, element) {

        var controldef = "";
        switch (scope.percentage.state) {
            case 'stable':
                controldef = ' <span class="text-yellow font-17">' +
                    '  <i>0%</i>' +
                    '<i class="fa "></i> </span>';



                break;
            case 'up':
                controldef = ' <span class="text-issue font-17">' +
                   '  <i>+ {{percentage.percentage}}%</i>' +
                   '<i class="fa fa-arrow-up"></i> </span>';
                break;
            case 'down':
                controldef = ' <span class="text-green font-17">' +
                  '  <i- {{percentage.percentage}}%</i>' +
                  '<i class="fa fa-arrow-down"></i> </span>';
                break;
            default:
                break;
        }
        element.html($compile(controldef));
    };
    var directive = {
        restrict: 'E',

        scope: {
            percentage: '='
        },
        link: linker

    }

    return directive;
}

percentview.$inject = ['$compile'];
angular
 .module('app')
 .directive('percentview', percentview);

формат html://

<percentview percentage="percentiles[0]"></percentview>

но когда я запускаю код, я получаю область ошибки.percentage is undefined I logged the scope object in link function and can see the property (object) called percentage with all values.

Как я могу передать объект в функции link. или что не так с этим кодом.

2 ответа

  1. Можешь попробовать element.percentage.state?
    Как я вижу, процент является атрибутом элемента.

  2. Передача переменной в функцию link кажется мне нормальной.

    Если вы передаете литерал, он работает хорошо, как вы можете видеть в jbin ниже, возможно, у вас есть проблемы с областью и процентили[0] его нет в этой области

    http://jsbin.com/zodeva/edit?html,js, консоль