Использование текстовых функций в угловом контроллере? - PullRequest
0 голосов
/ 18 октября 2018

Я новичок в angular и пытаюсь изменить поведение по умолчанию поля ввода текста textangular на серверной части моего сайта (я гитарист, а не веб-разработчик, нообычно могу понять, что мне нужно делать ...).В этом поле можно указать URL-адрес YouTube, а затем textangular преобразует его в изображение для редактирования в серверной части.Тогда в переднем конце textangular есть средства для корректного отображения URL-адреса YouTube в виде iframe.

Однако на переднем конце я не использую angular , и я читаючто в моем случае, чтобы встраивание youtube отображалось в переднем конце как iframe, вы должны использовать функцию taApplyCustomRenderers .

Например, см. здесь:

как удалить заполнитель img в текстовом редакторе Angular в области видимости var?

В моем приложении angular приведены некоторые соответствующие строки:

angular.module('dashboard')
.controller('EditController', ['$scope', '$http', '$location', '$routeParams', function ($scope, $http, $location, $routeParams) {

$scope.save = function () {
    $scope.busy = true;
    // I thoguht I could do this:
    $scope.somefield = taApplyCustomRenderers($scope.somefield);
    // then I would save to model
    });

Я получаю сообщение о том, что taApplyCustomRenderers не определено.Исходя из того, что я прочитал, я подумал, что taApplyCustomRenderers является доступной функцией при использовании textangular , но, будучи новичком в этом, я полагаю, что я пропускаю какой-то ключевой шаг о введении функции в контроллер или что-то в этом роде..

Надеясь, что кто-то может пролить свет.

Заранее спасибо!Brian

1 Ответ

0 голосов
/ 18 октября 2018

TLDR; Когда вы пытаетесь получить доступ к taApplyCustomRenderers, вы получаете ошибку, поскольку она не передана этой текущей функции, введите функцию, и она будет работать.

Проблема

Хотя я никогда не пытался использовать textAngular, позвольте мне объяснить, в чем проблема, и оттуда должно быть легко найти решение.

Ваш EditController это просто обычная функция javascript, которая запускается и присоединяется к соответствующему элементу DOM, поэтому она имеет доступ только к функциям, которые объявлены в своей собственной области (или глобально).

Вот ваш точныйКод просто имеет другой отступ, так что вы можете лучше понять:

angular.module('dashboard').controller(
    'EditController',
    [
        '$scope',
        '$http',
        '$location',
        '$routeParams', 
        function ($scope, $http, $location, $routeParams) {
            ...
            $scope.somefield = taApplyCustomRenderers($scope.somefield);
        }
    ]
);

Как видите, controller function имеет два параметра, первый из которых string, а второй * array,и последний element в array является просто обычным function.

Решение

Проверка textAngular документации Я видел, что taApplyCustomRenderersэто фабрика, а это значит, что вы можете ввести егов функции вашего контроллера так:

angular.module('dashboard').controller('EditController', 
    ['$scope', '$http', '$location', '$routeParams', 'taApplyCustomRenderers',
     function ($scope, $http, $location, $routeParams, taApplyCustomRenderers) { 
         taApplyCustomRenderers(); // is now Available.
     }
    ]);
...