我是 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 时是可用的功能,但对此我是新手,我想我缺少将功能注入控制器的关键步骤等等。
希望某人能有所启发。
提前谢谢! 布莱恩
答案 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