以上就是给各位分享jQuery调用在Angular的$viewContentLoaded中不起作用,其中也会对angularjsjquery进行解释,同时本文还将给你拓展$viewContentLoa
以上就是给各位分享jQuery调用在Angular的$ viewContentLoaded中不起作用,其中也会对angularjs jquery进行解释,同时本文还将给你拓展$ viewContentLoaded没有触发、angular 2 ViewChild不起作用、Angular HostListener preventDefault 不起作用、Angular HttpClient POST 请求在 upLoadByFile 方法 EditorJs 中不起作用等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- jQuery调用在Angular的$ viewContentLoaded中不起作用(angularjs jquery)
- $ viewContentLoaded没有触发
- angular 2 ViewChild不起作用
- Angular HostListener preventDefault 不起作用
- Angular HttpClient POST 请求在 upLoadByFile 方法 EditorJs 中不起作用
jQuery调用在Angular的$ viewContentLoaded中不起作用(angularjs jquery)
无法在Angular控制器的$ viewContentLoaded事件中调用jquery函数,以下是相同的代码。
$scope.$on(''$viewContentLoaded'', function() { jQuery.growlUI(''Growl Notification'', ''Saved Succesfully''); jQuery(''#category'').tree() });
这里需要任何配置吗?我什至尝试了noConflict(); var $ jq = jQuery.noConflict(); 是否需要其他配置?
谢谢阿卜杜勒
答案1
小编典典首先,不要从控制器进行DOM操作。而是从指令执行。
您可以在指令链接方法中执行相同的操作。您可以访问element
在其上应用了指令。
确保在angularjs脚本之前加载jquery,然后在grawlUI,三个,angularJS和最后是应用程序脚本之前加载jquery。以下是指令示例
var app = angular.module("someModule", []);app.directive("myDirective", function () { return function (scope, element, attrs) { $.growlUI(''Growl Notification'', ''Saved Succesfully''); element.tree(); };});
angularjs已内置jQuery
lite。如果在angular之后加载完整的jquery,则由于已经定义了jQuery,因此完整的jquery脚本将跳过执行。
==发表评论后更新==
我在评论后再次查看了您的问题,并意识到通过ajax加载的内容会在您的角度视图中追加到某个div。然后,您想将element.tree()jQuery插件应用于该内容。不幸的是,上面的示例不起作用,因为它是在链接上触发的,该链接是在ajax响应中的内容通过我向您显示的指令附加到元素之前发生的。但是不用担心,有一种方法:)尽管它既快速又肮脏,但是仅用于演示。
假设这是您的控制器
function ContentCtrl($scope, $http){ $scope.trees=[]; $scope.submitSomethingToServer=function(something){ $http.post("/article/1.html", something) .success(function(response,status){ // don''t forget to set correct order of jquery, angular javascript lib load $.growlUI(''Growl Notification'', ''Saved Succesfully''); $scope.trees.push(response); // append response, I hope it is HTML }); }}
现在,指令位于控制器范围内(它与控制器使用相同的范围)
var app = angular.module("someModule", []);app.directive("myDirective", function () { return function (scope, element, attrs) { scope.$watch("trees", function(){ var newParagraph=$("<p>" + scope.trees[scope.trees.length-1] + "</p>" ); // I hope this is ul>li>ul>li...or what ever you want to make as tree element.append(newParagraph); newParagraph.tree(); //it will apply tree plugin after content is appended to DOM in view }); };});
第二种方法是在ajax完成并且从服务器获取内容后,从控制器进行$ broadcast或$
emit事件(取决于指令在控制器的外部,在控制器的范围内)。然后,应该将指令订阅此事件,并通过接收传递的数据(data =
content作为字符串)来处理该指令,并按照上面的说明进行其余操作。
问题是,威胁将来自ajax的内容作为数据一直传递到指令,然后将其注入到要呈现它的元素中并将树插件应用于该内容。
$ viewContentLoaded没有触发
$viewContentLoaded
永远不会在我的Angular控制器中触发。下列:
function MyController($scope){ $scope.$on(''$viewContentLoaded'', function() { alert("blah"); });}
永远不会碰到断点,永远不会弹出警报。我认为这是非常标准的用法,所以我不确定它会是什么,但绝对不会触发。控制器中的其他所有内容均正常运行。
是什么原因造成的?
答案1
小编典典根据上面的评论,听起来您有这样的事情:
<ng-view> <div ng-controller="MyController"></div></ng-view>
我不确定ng-view标记中的内容会做什么,但是$viewContentLoaded
是从ng-view范围 发出 的。这意味着,它只会从上升ng-view
,因此您的控制器将永远不会抓住它。
angular 2 ViewChild不起作用
模板:
<div #refId> {{lineNumber}} </div>
零件:
import {Component,OnInit,Input,ElementRef,ViewChild} from '@angular/core'; import {Globals} from "../../../globals"; @Component({ selector: 'app-line-counter',templateUrl: './line-counter.component.html',styleUrls: ['./line-counter.component.css'] }) export class LineCounterComponent implements OnInit { @ViewChild('#refId') textDiv:ElementRef; @input() lineNumber : number = 0; constructor() { } ngOnInit() { if(Globals.refLineCounter == null) { Globals.refLineCounter = this; //console.log(Globals.refLineCounter.getHeight()); console.log(this.getHeight()); } } getHeight(){ return this.textDiv.nativeElement.height; } }
解决方法
@ViewChild('refId') textDiv:ElementRef;
其次,ViewChild变量在AfterViewInit生命周期之前未初始化,因此您需要将代码从ngOnInit移动到ngAfterViewInit:
ngAfterViewInit() { if(Globals.refLineCounter == null) { Globals.refLineCounter = this; //console.log(Globals.refLineCounter.getHeight()); console.log(this.getHeight()); } }
Angular HostListener preventDefault 不起作用
来自MDN website:
Event 接口的 preventDefault()
方法告诉用户代理,如果事件没有得到显式处理,则不应像通常那样采取其默认操作。 事件继续像往常一样传播,除非它的事件侦听器之一调用 stopPropagation()
或 stopImmediatePropagation()
,其中任何一个立即终止传播。
所以请尝试使用 event.stopPropagation()
或 event.stopImmediatePropagation()
。
Angular HttpClient POST 请求在 upLoadByFile 方法 EditorJs 中不起作用
如何解决Angular HttpClient POST 请求在 upLoadByFile 方法 EditorJs 中不起作用?
我正在尝试将 EditorJs 集成到我的 Angular v10.1.7 应用程序中。但是在图像配置中,我无法使用来自 Angular HttpClient 的 POST 请求将请求发送到我的服务器。
代码如下:
image: {
class: Imagetool,config: {
uploader: {
uploadByFile(file) {
let formData = new FormData();
formData.append(''image'',file,this.title);
this.httpClient.post(this.NEWS_URL + ''image'',formData)
.subscribe((res) => {
return {
success: res.success,url: res.url,};
});
},},
和错误:
Image Tool: uploading Failed because of TypeError: Cannot read property ''post'' of undefined
我该如何处理这个问题?是否有其他解决方案可以在不使用 Angular HttpClient 的情况下将文件发送到服务器?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
今天关于jQuery调用在Angular的$ viewContentLoaded中不起作用和angularjs jquery的讲解已经结束,谢谢您的阅读,如果想了解更多关于$ viewContentLoaded没有触发、angular 2 ViewChild不起作用、Angular HostListener preventDefault 不起作用、Angular HttpClient POST 请求在 upLoadByFile 方法 EditorJs 中不起作用的相关知识,请在本站搜索。
本文标签: