如何在 angularjs 中的简单获取请求 json 之后添加事件侦听器
How to add eventlisteners after simple get request json in angularjs?
好的,所以我正在尝试使用Angular,但我遇到了一个问题,也许是因为我还没有采用Angular的思维方式,但这基本上是我遇到的。
我通过 JSON 请求获取一些数据,并使用 ng-repeat 在列表中显示这些数据。目前为止,一切都好。控制台中没有错误,但它不会将事件侦听器附加到 ng-repeat 元素。代码很好,因为对于非 ng 重复元素,它就像一个魅力。其他人遇到了这个问题,您是如何解决的?提前谢谢。
<div ng-controller="basictrl">
<h1>Lijst van producten</h1>
<ul ng-repeat="item in producten">
<li>{{item.naam}}</li>
<li>{{item.prijs}}</li>
</ul>
</div>
.JS
angular.module("app", ['ngRoute'])
.controller("basictrl", function ($scope, $http, producteffecten) {
$scope.producten = null;
$http({
method: 'GET',
url: 'producten.json'
}).
success(function (data, status, headers, config) {
$scope.producten = data;
$scope.showdescription = producteffecten.showdescription;
}).error(function (data, status, headers, config) {});
})
.factory('producteffecten', function() {
var effecten = {};
effecten.showdescription = $('ul').hover(function (){
$(this).append("<p>Test</p>");
});
return effecten;
})
简单的答案是:你可以使用 $('ul').on("hover",function(){})。但这不是棱角分明的思维方式。您可以进行的第一个改进是:
- 将 ng-mouseover="muisOverEffectje()" 添加到 HTML 中的 ul 中
- 将 $scope.muisOverEffectje=function(){ your event code} 添加到角度页面
避免使用 jquery 添加代码以使其更有棱角的下一步可能是这样的:
- 添加一个参数,将所选项目提供给事件:muisOverEffectje(item)
- 将 ng-show="showDescription" 添加到 ul
- 在事件处理程序中将显示说明设置为 true
最后一步可能是: 为你制定指令 .例如,产品组件。
设置超时有效,但我想这很笨拙。我将尝试以更有棱角的方式重写。
.factory('producteffecten', function() {
var effecten = {};
//SETTING TIMEOUT WORKS SOMEHOW
effecten.showdescription = setTimeout(function() {
$('ul').hover(function (){
$(this).append("<p>Test</p>");
});
}, 10);
return effecten;
})
你也可以写一个指令。在角度中,哪种方式是做这种事情的最好方法:
目录:
<div ng-controller="basictrl">
<h1>Lijst van producten</h1>
<ul ng-repeat="item in producten" hover-text="item.effect">
<li>{{item.naam}}</li>
<li>{{item.prijs}}</li>
</ul>
</div>
.js:
.controller("basictrl", function ($scope, $http, producteffecten) {
$scope.producten = null;
$http({
method: 'GET',
url: 'producten.json'
}).
success(function (data, status, headers, config) {
$scope.producten = data;
$scope.showdescription = producteffecten.showdescription;
}).error(function (data, status, headers, config) {});
})
.directive("hoverText",function(){
return {link:function(scope,elem,attr){
var insertElem=$("<div class='hovertext'>"+scope.hoverText+"</div>")
elem .mouseenter(function() {
insertElem.appendTo(elem);
})
.mouseleave(function() {
insertElem.remove();
});
},
scope:{"hoverText":"="}
};
});
相关文章:
- Javascript:JSON请求仅在第一次工作
- 神秘的ajax json请求问题jQuery
- Ajax/JSON请求php处理页面
- JSON请求返回.txt文件
- 在设置用户后,从 JavaScript JSON 请求中获取 Web 服务 (asmx) ASP.NET Windows
- 对 URL 的 JSON-P 请求不起作用
- React返回未定义的JSON请求
- D3 Json请求获取XmlHttpRequest错误:访问控制允许原点不允许原点为null
- 如何在浏览器中压缩json请求数据
- 向ajax json请求添加缓存
- 如何在不发生冲突的情况下处理多个json请求
- Json 请求与 YQL 和 MooTools
- 两个 JSON 请求的列表
- Jquery JSON 请求的语法错误问题
- (对象对象)从节点中的 JSON 请求返回
- 有关多个 Facebook Json 请求的性能建议
- 如何在 d3 中从 json 请求数据
- 用于发送 ajax/JSON 请求的 JQuery 快捷方式
- 如何在 JavaScript 中执行跨域 JSON 请求
- JSON 请求错误 500