GVKun编程网logo

jQuery调用在Angular的$ viewContentLoaded中不起作用(angularjs jquery)

14

以上就是给各位分享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)

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没有触发

$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不起作用

angular 2 ViewChild不起作用

我无法理解为什么当相同的确切代码在textarea元素上工作时ViewChild返回null,但它不适用于div

模板:

<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中删除#,您不需要它:

@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 不起作用

Angular HostListener preventDefault 不起作用

来自MDN website:

Event 接口的 preventDefault() 方法告诉用户代理,如果事件没有得到显式处理,则不应像通常那样采取其默认操作。 事件继续像往常一样传播,除非它的事件侦听器之一调用 stopPropagation()stopImmediatePropagation(),其中任何一个立即终止传播。

所以请尝试使用 event.stopPropagation()event.stopImmediatePropagation()

Angular HttpClient POST 请求在 upLoadByFile 方法 EditorJs 中不起作用

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 中不起作用的相关知识,请在本站搜索。

本文标签: