在角度控制器中使用textangular函数?

时间:2018-10-18 13:13:19

标签: angularjs textangular

我是 angular 的新手,正在尝试更改网站后端的 textangular 文本输入字段的默认行为(我是吉他手,不是网络开发人员,但通常可以弄清楚我需要做什么...)。该字段具有一个选项,可以指定youtube网址,然后 textangular 会将其转换为图像,以便在后端进行编辑。然后在前端 textangular 可以将youtube网址正确显示为iframe。

但是,在前端,我没有使用 angular ,我读到了我的情况,要让youtube嵌入到iframe前端显示,您必须使用 taApplyCustomRenderers 函数。

例如,请参见此处:

how to strip placeholder img in textAngular editor in scope 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 时是可用的功能,但对此我是新手,我想我缺少将功能注入控制器的关键步骤等等。

希望某人能有所启发。

提前谢谢! 布莱恩

1 个答案:

答案 0 :(得分:1)

  

TLDR; ;当您尝试访问taApplyCustomRenderers时,由于没有将此错误提供给当前功能,您将收到一个错误,请注入该功能,它将起作用。

问题

虽然我从未真正尝试过使用textAngular,但让我解释一下问题所在,从那里很容易找到解决方案。

您的EditController只是运行并附加到相关DOM元素的常规javascript函数,因此它只能访问在其自己的范围(或全局)中声明的函数。

  

这是您的确切代码,只是缩进不同,所以您可以更好地理解:

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

如您所见,controller function有两个参数,第一个是string,第二个是array,最后一个element是{{1 }}只是常规的array

解决方案

检查textAngular documentation时发现function是一个工厂,这意味着您可以将其注入到控制器函数中,如下所示:

taApplyCustomRenderers