Javascript 在AngularJS控件内调用jQuery函数

Javascript 在AngularJS控件内调用jQuery函数,javascript,jquery,angularjs,wysiwyg,Javascript,Jquery,Angularjs,Wysiwyg,对于我的AngularJS应用程序,我需要使用jQuery插件 我尝试使用的函数是$(“#replyContents”).bbcode()应该从replyContents中获取内容,并给我BBCode值 我试图做的是在我的控制器中我将范围设置为: function controlForum($scope) { $scope.contents = $("#replyContents").bbcode(); $scope.btnReply = function() {

对于我的AngularJS应用程序,我需要使用jQuery插件

我尝试使用的函数是
$(“#replyContents”).bbcode()
应该从
replyContents
中获取内容,并给我BBCode值

我试图做的是在我的
控制器中
我将范围设置为:

function controlForum($scope) {
    $scope.contents = $("#replyContents").bbcode();

    $scope.btnReply = function() {
        console.log($scope.contents);
    }
}
然而,它只返回null,不返回任何内容

我之所以包含jQuery,是因为我可以调用
$(“#replyContents”).wysib(wbbOpt)在工作页面上的控制器外部


如何使
bbcode
函数在角度函数中工作?

更好的方法是使用作为原生AngularJS指令编写的文本编辑器。很好

如果您真的必须使用jQuery插件,那么您可以使用类似的东西,或者您可以创建自己的指令

下面是一个使用您自己的指令的示例。要将编辑器的内容与应用于textarea的ng模型同步,可以要求使用ngModel,然后使用ngModel API的$setViewValue根据某个事件更新模型。在本例中,当在“editor”div中触发keyup事件以及单击工具栏上的一个按钮时,我将进行更新

显然,如果您想使用此编辑器执行诸如上载图像文件之类的操作,则必须添加不同类型的侦听器/处理程序

angular.module('jqueryplugin.demo',['wysibb']);
angular.module('jqueryplugin.demo'))
.controller('MainCtrl',['$scope',函数($scope){
$scope.logIt=函数(val){
控制台日志(val);
};
}]);
角度.module('wysib',[])
.directive('wysib',function(){
返回{
限制:“A”,
要求:'ngModel',
链接:功能(范围、元素、属性、模型){
变量文本区域、编辑器、按钮;
变量选项={
按钮:“粗体、斜体、下划线”
};
textarea=element.wysib(选项);
editor=element.next();
buttons=element.parents('.wysibb').find('.wysibb-toolbar');
on('keyup',function()){
作用域$apply(函数(){
ngModel.$setViewValue(editor.html());
});
});
按钮。在('单击',函数()上){
作用域$apply(函数(){
ngModel.$setViewValue(editor.html());
});
});
}
};
});
导入url(//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css);
@导入url(http://cdn.wysibb.com/css/default/wbbtheme.css);
文本区{
最小高度:130px;
}


我刚刚发现,如果我不将它应用于某个范围,它是可以工作的,但我需要将它分配给该范围。检查$jQuery在该上下文中是否为$,以及在调用该代码时,$(“#replyContents”)是否可用。您可以推迟使用带有如下构造的插件:`setTimeout(function(){$(“#replyContents”).bbcode();},50);如果您可以在一个功能正常的JSFIDLE或其他东西中提供其余的代码,那么它总是很有帮助的。。。