我在我的web应用中同时使用Bootstrap和AngularJS。我很难让这两个人一起工作。
我有一个元素,它的属性是data-provide="typeahead"
<input id="searchText" ng-model="searchText" type="text"
class="input-medium search-query" placeholder="title"
data-provide="typeahead" ng-change="updateTypeahead()" />
当用户在字段中输入时,我希望更新data-source
属性。函数updateTypeahead
被正确触发,但我不能访问触发事件的元素,除非我使用$('#searchText')
,这是jQuery方式,而不是AngularJS方式。
让AngularJS与旧式JS模块协同工作的最佳方式是什么?
发布于 2013-02-14 05:59:53
访问触发事件的元素的一般角度方法是编写一个指令并将()绑定到所需的事件:
app.directive('myChange', function() {
return function(scope, element) {
element.bind('change', function() {
alert('change on ' + element);
});
};
});
或者使用DDO (根据@tpartee下面的评论):
app.directive('myChange', function() {
return {
link: function link(scope, element) {
element.bind('change', function() {
alert('change on ' + element);
});
}
}
});
上述指令的用法如下:
<input id="searchText" ng-model="searchText" type="text" my-change>
在文本字段中键入,然后离开/blur。change回调函数将被触发。在回调函数中,您可以访问element
。
一些内置指令支持传递$event对象。例如,ng-*click,ng-Mouse*。请注意,ng-change不支持此事件。
尽管您可以通过$event对象获取元素:
<button ng-click="clickit($event)">Hello</button>
$scope.clickit = function(e) {
var elem = angular.element(e.srcElement);
...
这是“与角度相反的方式”-- Misko。
发布于 2013-09-27 14:27:36
如果您想要ng-model值,如果您可以在触发的事件中这样写:$scope.searchText
https://stackoverflow.com/questions/12994710
复制相似问题