0

私はAngularを初めて使用し、サイトのバックエンドで textangularテキスト入力フィールドのデフォルトの動作を変更しようとしています(私はギタリストであり、Web 開発者ではありませんが、通常は何をする必要があるかを理解できます...)。このフィールドには、YouTube の URL を指定するオプションがあり、textangularはそれをバックエンドで編集する目的で画像に変換します。次に、フロントエンドの textangularには、YouTube の URL を iframe として正しく表示する手段があります。

ただし、フロント エンドでは角度を使用していません。私の場合、YouTube の埋め込みを iframe としてフロント エンドに表示するには、taApplyCustomRenderers関数を使用する必要があることを読みました。

たとえば、次を参照してください。

スコープvarのtextAngularエディタでプレースホルダimgを取り除く方法は?

私の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が定義されていないというエラーが表示されます。私が読んだことに基づいて、 textangular を使用するときにtaApplyCustomRenderersが利用可能な関数であると考えましたが、これに慣れていないので、コントローラーなどに関数を挿入するための重要なステップが欠けていると思います。

誰かが光を当てることができることを願っています。

前もって感謝します!ブライアン

4

1 に答える 1

1

TLDR; アクセスしようとするとtaApplyCustomRenderers、この現在の関数に与えられていないためエラーが発生します。関数を注入すると機能します。

問題

私は実際に textAngular を使用したことはありませんが、問題が何であるかを説明させてください。そこから解決策を見つけるのは簡単なはずです。

YourEditControllerは、実行されて関連する DOM 要素にアタッチされる通常の JavaScript 関数にすぎないため、独自のスコープ (またはグローバル) で宣言されている関数にのみアクセスできます。

よりよく理解できるように、インデントが異なるだけの正確なコードを次に示します。

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

ご覧のとおり、 にcontroller functionは 2 つのパラメーターがあり、最初のパラメーターは astringで、2 番目のパラメーターは anarrayであり、最後の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.
     }
    ]);
于 2018-10-18T14:20:33.227 に答える