Хорошо, я постараюсь сказать это как можно лучше, так что голый со мной! Шаблон содержит метод. Во время выполнения он ожидает, что этот метод будет присутствовать в текущей области. Однако в этот момент область действия - это изолированная область действия, созданная с помощью директивы, и просто содержит значение idrval, поэтому метод не определен.
Вы должны либо добавить функцию convertIDRtoUSD() в рамках директивы, или передать функцию в вашей директивы вместе с idrval. Если вы выберете первый, you'r директива может выглядеть следующим образом:
bitcoinApp.directive("currencyConvert", function() {
return {
restrict: 'A',
scope: {
idrval: '@'
},
template: '<span class="has-tip" tooltip="convertIDRtoUSD({{idrval}})" tooltip-animation="false">{{idrval}}</span>',
link: function(scope) {
scope.convertIDRtoUSD = function(idrValue) {
return CurrencyConversions.convertToUSD(idrValue, 'IDR');
};
}
};
});
Если вы хотите передать эту функцию в, а функция существует на контроллере, ваш HTML будет выглядеть примерно так:
<td currency-convert my-func="convertIDRtoUSD(val)" idrVal="{{(btcAsk.btcValue * btcAsk.btcAmnt).toFixed(2)}}"></td>
и ваша директива:
bitcoinApp.directive("currencyConvert", function() {
return {
restrict: 'A',
scope: {
idrval: '@',
myFunc: '&'
},
template: '<span class="has-tip" tooltip="myFunc({val: idrval})" tooltip-animation="false">{{idrval}}</span>'
};
});
Некоторые вещи, чтобы отметить - имя атрибута функции должно быть «тир названия» не верблюд случай с именем и параметры функции, передаваемыми в директива должна быть передана объект с именованными значениями. Надеюсь, это поможет!
Я добавил функцию в область действия директивы. Функция, похоже, не называется, хотя она отображается только как буквальный текст. [jsfiddle example] (http://jsfiddle.net/kmbzu2eu/2/) – magician11
[Я обновил вашу скрипку, чтобы она работала.] (http://jsfiddle.net/kmbzu2eu/5/). Проблема заключалась в том, что у вас были фигурные скобки в неправильном месте - вы хотите, чтобы всплывающая подсказка была результатом оцененного выражения _ {{convertIDRtoUSD (idrval)}} _. В любом случае вам не нужно {{idrval}}, так как его просто число. –
Отлично! Спасибо! – magician11