GVKun编程网logo

在angularjs中如何访问触发事件的元素?(angularjs点击事件)

21

关于在angularjs中如何访问触发事件的元素?和angularjs点击事件的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AngularJS+JQuery:如何使动态内容在angula

关于在angularjs中如何访问触发事件的元素?angularjs点击事件的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AngularJS + JQuery:如何使动态内容在angularjs中工作、AngularJS JQuery:如何获得动态内容在angularjs中工作、AngularJs ng-change手动触发事件、angularjs – Dragula angle如何访问模型项目等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

在angularjs中如何访问触发事件的元素?(angularjs点击事件)

在angularjs中如何访问触发事件的元素?(angularjs点击事件)

我在我的Web应用程序中同时使用了Bootstrap和AngularJS。我很难让两个人一起工作。

我有一个元素,它具有属性 data-provide="typeahead"

<input id="searchText" ng-model="searchText" type="text"placeholder="title"       data-provide="typeahead" ng-change="updateTypeahead()" />

我想data-source在用户在字段中输入时更新属性。该函数updateTypeahead已正确触发,但是除非我使用$(''#searchText''),这是jQuery方式,而不是AngularJS方式,否则我无法访问触发事件的元素。

使AngularJS与旧式JS模块一起工作的最佳方法是什么。

答案1

小编典典
 updateTypeahead(this)

不会将DOM元素传递给函数updateTypeahead(this)。这里this将参考范围。
如果要访问DOM元素,请使用updateTypeahead($event)。在回调函数中,您可以通过获取DOM元素event.target

请注意:ng-change函数不允许将$ event作为变量传递。

AngularJS + JQuery:如何使动态内容在angularjs中工作

AngularJS + JQuery:如何使动态内容在angularjs中工作

我正在使用jQuery和AngularJS开发Ajax应用程序。

当我使用jQuery的html功能更新div的内容(包含AngularJS绑定)时,AngularJS绑定不起作用。

以下是我正在尝试执行的代码:

$(document).ready(function() {

  $("#refreshButton").click(function() {

    $("#dynamicContent").html("<button ng-click='count = count + 1' ng-init='count=0'>Increment</button><span>count: {{count}} </span>")

  });

});


</style><script src="http://docs.angularjs.org/angular-1.0.1.min.js"></script><style>.ng-invalid {

  border: 1px solid red;

}


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="">

  <div id='dynamicContent'>

    <button ng-click="count = count + 1" ng-init="count=0">

        Increment

      </button>

    <span>count: {{count}} </span>

  </div>





  <button id='refreshButton'>

    Refresh

  </button>

</div>

我在具有ID的div内包含动态内容#dynamicContent,并且具有一个刷新按钮,当单击刷新时,该按钮将更新该div的内容。如果不刷新内容,增量将按预期工作,但是刷新后,AngularJS绑定将停止工作。

这在AngularJS中可能无效,但是我最初使用jQuery构建了应用程序,后来又开始使用AngularJS,因此无法将所有内容都迁移到AngularJS。非常感谢在AngularJS中实现此功能的任何帮助。

AngularJS JQuery:如何获得动态内容在angularjs中工作

AngularJS JQuery:如何获得动态内容在angularjs中工作

我正在使用一个Ajax应用程序使用jQuery和AngularJS。

当我使用jQuery的html函数更新div的内容(其中包含AngularJS绑定)时,AngularJS绑定不工作。

这是一个JSFiddle版本的我想要做的。

我有一个动态内容在一个div与ID #dynamicContent,我有一个刷新按钮,将更新此div的内容,当刷新点击。增量工作原理如果我不刷新内容,但刷新后,AngularJS绑定停止工作。

这可能不是有效的AngularJS,但我最初用jQuery构建应用程序,并开始使用AngularJS后,所以我不能迁移所有的AngularJS。任何帮助获得这工作在AngularJS非常感谢。

您需要在HTML字符串上调用$ compile,然后将其插入到DOM中,这样angular才有机会执行绑定。

在你的小提琴,它会看起来像这样。

$("#dynamicContent").html(
  $compile(
    "<button ng-click='count = count + 1' ng-init='count=0'>Increment</button><span>count: {{count}} </span>"
  )(scope)
);

显然,$ compile必须注入到你的控制器中才能工作。

阅读更多在$compile documentation。

AngularJs ng-change手动触发事件

AngularJs ng-change手动触发事件

<input type="checkBox" value="" ng-model="filterPrivateDocCheckBox" ng-click="dl.filterPrivateDocument(filterPrivateDocCheckBox,$event)">
 <input st-search="target"ng-model="dl.documentTarget" ng-change="dl.change()" />

function filterPrivateDocument(val) 
{
    if(val)
    this.documentTarget = 'Private';
}

当我点击checkBox时,我将值设置为文本框,但是我看到ng-change事件没有被触发.为什么?

而且当我在文本框中输入一些值时,我发现ng-change事件被触发了.

解决这个问题的任何方法?

解决方法

根据 the docs:

The ngChange expression is only evaluated when a change in the input value causes a new value to be committed to the model.

It will not be evaluated:

  • if the value returned from the $parsers transformation pipeline has
    not changed
  • if the input has continued to be invalid since the model
    will stay null
  • if the model is changed programmatically and not by a
    change to the input value

因此,当它被JavaScript(/ angular)更改时不会被触发.

您可以做的是,自己触发更改功能:

function filterPrivateDocument(val) {
    if(val) {
        this.documentTarget = 'Private';
        this.change();
    }
}

见this jsfiddle

angularjs – Dragula angle如何访问模型项目

angularjs – Dragula angle如何访问模型项目

如何使用drop-model事件访问拖放的确切模型项?

从文档中删除事件的说明:

el was dropped into target before a sibling element,and originally came from source

el似乎返回被拖动的HTML元素,但是我需要对它后面的实际数据项执行操作.任何提示?

<divid="manageUsers">
    <divdragula='"bag"' dragula-model='usersInProject'>
        <div ng-repeat='user in usersInProject' ng-bind='user.email'></div>
    </div>
    <divdragula='"bag"' dragula-model='usersnotinProject'>
        <div ng-repeat='user in usersnotinProject' ng-bind='user.email'></div>
    </div>
</div>

$scope.$on('bag.drop-model',function (e,el,target,source) {
    //this returns the html element
    console.log(el);
});
我有同样的问题,并通过将项目的id添加到HTML元素来解决它.

这样的事情

<div id="{{ user.id }}" ng-repeat='user in usersnotinProject' ng-bind='user.email'></div>

在控制器中,我使用id查找项目:

$scope.$on('bag.drop-model',source) {
    //getById is a function you implement (unless you already have it)
    console.log(usersnotinProject.getById(el.attr('id')).email);
});

关于在angularjs中如何访问触发事件的元素?angularjs点击事件的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于AngularJS + JQuery:如何使动态内容在angularjs中工作、AngularJS JQuery:如何获得动态内容在angularjs中工作、AngularJs ng-change手动触发事件、angularjs – Dragula angle如何访问模型项目等相关内容,可以在本站寻找。

本文标签: