angularjs - angularJS 自定义 chrome devtools 网络
问题描述
我正在尝试使用 angularjs 进行开发,这是一个列出网络调用的自定义 devtool chrome 面板:
function devToolCtrl($scope, $http) {
self = $scope;
self.callData = [];
self.call = {};
let i = 0;
chrome.devtools.network.onRequestFinished.addListener(function (data) {
data.getContent(function (content) {
if (data._resourceType == "xhr") {
if (data.response.status !== 0) {
let endpoint = data.request.url.substr(data.request.url.lastIndexOf("/") + 1);
let call = { id: i, endpoint: endpoint, requMeta: data, response: content };
self.callData.push(call);
i++;
}
}
})
});
self.clear = function () {
self.callData = [];
console.log('AFTER!', self.callData);
}
self.charge = function () {
console.log('CHARGED!', self.callData);
}
};
angular
.module('devToolDecript', [])
.controller('devToolCtrl', devToolCtrl);
侦听器正常工作,并且self.callData数组已填充。
在 Html 文件中,我想通过以下方式查看“端点”列表:
<li ng-repeat="call in callData | filter:search ">
或简单
{{callData}}
但不起作用:(
$watch 都没有用:
self.$watch('dataArray', function () {
console.log('UPDATE!', self.dataArray);
}, true);
我被迫运行self.charge()(实际上什么都不做)在我的 Html 页面中看到一些东西,这让我发疯了!我真的不知道,任何建议都非常感谢,谢谢
解决方案
最后我找到了一个“肮脏”的解决方案:
chrome.devtools.network.onRequestFinished.addListener(function (d) {
d.getContent(function (c) {
if (d._resourceType == "xhr") {
if (d.response.status !== 0) {
let e = d.request.url.substr(d.request.url.lastIndexOf("/") + 1);
let call = { endpoint: e, meta: d, content: c };
var scope = angular.element(document.getElementById("devToolCtrl")).scope();
scope.$apply(function () {
scope.dataArray.push(call);;
});
}
}
})
});
有一些东西可以chrome.devtools.network.onRequestFinished.addListener
防止角度绑定或类似的东西。寻找更优雅的解决方案的贡献!
推荐阅读
- php - 您无权访问此服务器上的 /frontend/web/
- python - python中的FastDictCache
- asp.net - Web 服务将 id 发送到另一个源并返回信息
- ionic-framework - 我如何检查文件是否存在离子
- javascript - 致命错误:JavaScript 堆内存不足——Node v12.18.1 和 Nuxt
- javascript - Javascript CORS 被阻止
- reactjs - 如何将页面限制为仅登录用户
- nginx - 通过 Nginx 反向代理处理 Socket.IO 请求
- api - Azure 安全中心解除警报的授权令牌
- c# - 如何让手数脚本与 NinjaTrader 一起使用