- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于一个大学项目,我必须使用 Ionic 4 实现一个 Ionic 应用程序。
在应用程序中,您可以扫描 QR 码,它提供来自 JSON 文件的特定街头艺术的数据,并使用 cordova 插件将其显示在相机预览中。这很好用。
我现在尝试在扫描 QR 码后将 JSON 文件中的 bool 值设置为 true,以便显示仅包含扫描的 QR 码数据的列表。
我曾尝试使用 Cordova File-Plugin,但我无法让它正常工作。
setJson(fileName, object) {
this.file.writeFile(this.dataDirectory,this.fileName,
JSON.stringify(this.object), {append: true, replace: false});
}
目前我收到这个错误:EncodingError:提供给 API 的 URI 格式错误,或者生成的数据 URL 超出了数据 URL 的 URL 长度限制。
ar.page.ts:
import { Plugins } from '@capacitor/core';
import { Component, OnInit, Inject, ViewEncapsulation } from
'@angular/core';
import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
import { JsonDataService } from '../../json-data.service';
import { DOCUMENT } from '@angular/common';
import { Toast } from '@ionic-native/toast/ngx';
import { Router, NavigationExtras } from '@angular/router';
import { NavController, ModalController } from '@ionic/angular';
import { File } from '@ionic-native/file/ngx';
import {
CameraPreview,
CameraPreviewOptions
} from '@ionic-native/camera-preview/ngx';
import { Platform } from '@ionic/angular';
import { ModalPagePage } from '../modal-page/modal-page.page';
const { Browser } = Plugins;
@Component({
selector: 'app-ar',
templateUrl: './ar.page.html',
styleUrls: ['./ar.page.scss'],
encapsulation: ViewEncapsulation.None
})
export class ArPage implements OnInit {
datenData = [];
selectedProduct: any;
productFound = false;
fileName = 'data.json';
dataDirectory = this.file.applicationDirectory + 'assets/data/';
object = {boolean: true};
constructor(
private barcodeScanner: BarcodeScanner,
private datenService: JsonDataService,
private toast: Toast,
private router: Router,
public modalController: ModalController,
public navCtrl: NavController,
private cameraPreview: CameraPreview,
private platform: Platform,
public file: File,
@Inject(DOCUMENT) private _document
) {
fetch('../../../assets/data/data.json')
.then(res => res.json())
.then(data => {
this.datenData = data.jsondata;
this.datenService.setJsondata(this.datenData);
console.log(data);
});
}
ngOnInit() {
this.qrscan();
}
qrscan() {
this.datenData = this.datenService.getJsondata();
this.selectedProduct = {};
this.barcodeScanner.scan().then(
barcodeData => {
this.selectedProduct = this.datenData.find(
daten => daten.qrcode === barcodeData.text
);
if (this.selectedProduct !== undefined) {
this.productFound = true;
this.setJson(this.fileName, this.object);
this.camerapreview();
this.showModal();
} else {
this.productFound = false;
this.router.navigate(['/tabs/tab2']);
this.toast
.show(`Product not found`, '5000', 'center')
.subscribe(toast => {
console.log(toast);
});
}
},
err => {
this.toast.show(err, '5000', 'center').subscribe(toast => {
console.log(toast);
this.router.navigate(['/tabs/tab2']);
});
}
);
}
setJson(fileName, object) {
this.file.writeFile(this.dataDirectory,this.fileName,
JSON.stringify(this.object), {append: true, replace: false});
}
}
数据.json:
{
"jsondata": [
{
"id": 1,
"boolean": false,
"qrcode": "1",
"location": {
"latitude": 50.952952,
"longitude": 6.912467,
"street": "Venloer Str. 429"
},
"title": "Ohne dich würde ich mich nicht trauen.",
"artist": {
"name": "Jasmin Siddiqui und Falk Lehmann alias Herakut",
"website": "http://www.herakut.de"
},
"information": {
"text": "Auf dem Mural vom deutschen Street Art Duo Hera und Akut erkennt man ein kniendes Mädchen, die ihren Hund auf dem Arm hält. Ängstlich blickt sie in Richtung des Parks am Bürgerzentrum Ehrenfeld und hält ihren Hund schützend vor sich. Neben dem Hund steht „ohne dich würde ich mich nicht trauen“. Neben dem Mädchen kann man die Worte lesen: „we love even the scary looking ones“ . Man kann das Bild als einen Verweis auf das bunte und teils zwielichtige Treiben in naheliegenden Park verstehen.",
"gallery": {
"picturemap": "http://www.herakut.de/wp-content/uploads/2014/05/ko%CC%88ln.jpg",
"picturemapcredit": "http://www.herakut.de"
}
}
}
]
}
json.ts:
export interface Daten{
id: any;
boolean: boolean;
qrcode: string;
location: {
latitude: any;
longitude: any;
street: string;
};
title: string;
artist: {
name: string;
website: string;
};
information: {
text: string;
gallery: {
picturemap: string;
picturemapcredit: string;
};
};
}
这是它的 github 存储库:https://github.com/alexandrasophiapetersen/BananAR-Cologne
二维码可以在 Assets 文件夹中找到。
这是我的第一个 Ionic 项目。如果有人可以帮助我,我将不胜感激。
非常感谢。
最佳答案
我刚刚看了你的代码,它看起来写得很好。
您尝试实现它的最后一次提交产生了一个微妙的错误:
使用 angular ngFor 它会在你放置的实际标签上循环,而不是在内容上循环,所以你最终会得到一个 ionic 列表列表,而你之前拥有的是一个带有 ionic 项目列表的 ionic 列表里面。
您可以在与 ngFor
相同的行上使用 ngIf
,并引用您正在循环的内容 - 如果这就是您移动它的原因。
对于您的实际问题,我认为您不应该尝试将 json 文件转换为某种数据库。把它想象成一个提要。您可以轻松地将那个 json 文件放到网络服务器上,让每个用户加载它,并自动更新它支持的二维码,只需更改网络服务器文件即可。
将个人用户数据放入其中不是正确的想法。
相反,您应该查找有关 Ionic Storage 的教程。它为您提供了一个简单的获取设置界面,一旦在您的项目中进行了配置,您就可以只为该用户加载数据。
保留一个单独的列表。您的 json 有一个 id
字段,因此您可以制作一个扫描代码数组并将 id 放入其中。然后对于每个项目,您可以通过查看当前项目的 ID 是否在该数组中来检查当前项目之前是否已被扫描。
我一直将此作为一般性建议,因为我假设它是一个您想自己学习的大学项目,而不是冒着收到一个定制的书面解决方案并尝试提交它的风险。如果您遇到问题,我可以更新我的答案。
浏览代码时的一些其他想法:
命名 bool 值 boolean
是一种攻击行为 :P 不要养成给这样糟糕的名字命名的习惯。给它一个描述性的名称,例如 isScanned
我看到您使用了一些原生的 toast 插件。也许你有理由这样做,但实际上有一个 toast 功能 built in to Ionic .我不确定您的教授给您打分的依据是什么,但我希望您尽可能使用内置组件。
关于ionic-framework - 扫描二维码后 Ionic 4 : Change boolean in data. json 为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57536895/
可以在 R 中生成二维码吗?是否有允许它的包? 最佳答案 现在在 CRAN 您可以使用 qrencoder包 - https://github.com/hrbrmstr/qrencoder - 这样做
我有一个使用相机扫描二维码的应用程序。当我打开应用程序并转到二维码阅读器时,一切正常。一旦我扫描代码,信息就会发送到另一个 Activity ,但是一旦我点击后退按钮,相机就会变黑(见下文),我就无法
有没有办法为一个二维码创建多个 Action ? 目标是扫描二维码并执行这些操作: 连接WIFI 转至特定网址 我可以用 2 个二维码完成这 2 个操作,但只有一个会更容易 最佳答案 你不能。 仅仅是
在我的应用程序中,我需要实现 Blackberry Messenger 中可用的功能,即用户可以通过扫描他们的 QR 码来添加其他用户。 我找到了可以帮助生成二维码的库,也找到了线程来帮助生成二维码。
我尝试了新的 Google Play 服务功能 - 条码/QR 扫描仪。在 sample应用程序通过点击按钮开始扫描,结果也会在点击时返回。 有没有办法改变它的行为以立即返回第一个检测到的条形码/二维
我正在寻找解密(不仅是解码)二维码的逻辑。最近我看到几个加密二维码的应用程序,比如QuickMark。 .例如,此 QR 使用密码“pass”解密为“StackOverflow”: 如果你使用一个没有
我的公司有一个通过 URL 访问的社交网络平台。 我们正在尝试找到一种方法在体育商店中宣传我们的 URL,只有您来到商店才能访问我们的网站 - 我们不希望将 URL 分享给任何地方的任何人。 我们考虑
我想根据字段卷号生成一个二维码,并使用 JavaScript 文件(客户端验证)将其显示在 ID 名为“vyas_qrcode”的 div 容器中。 生成二维码的逻辑在js文件(qrcode_js.j
我正在研究使用 Android、iOS 和可能的 Windows Phone 上的浏览器扫描二维码的可用方法。理想的解决方案是拥有一个既可以在移动设备屏幕上又可以在全尺寸计算机屏幕上运行的 Ang
我正在开发 Instagram、Snap Chat 和 Facebook 等社交应用。我需要生成用户配置文件的二维码。我从数据库中隐藏了用户 ID。我的应用程序中有一个扫描仪来扫描二维码。该功能运行良
我有一个用于生成 jpeg 和 png 格式的二维码的代码,但还想在 PHP 中生成带有背景图像的 svg 二维码。我正在使用 qrlib.php 生成 jpeg 和 png 格式。 最佳答案 QRl
我正在使用 primefaces 开发网络应用程序。我正在尝试在网页上显示条形码。除了 QR 码外,所有编码器都显示了。我读到这需要两个 jar 文件 barcode4j: 2.1 qrgen:1.4
我正在寻找一个库或方法来解码二维码(或可能是另一种形式的二维条码)并能够实际确定相机的位置和方向。这似乎应该是可行的,但我不完全确定。 有谁知道最好的路线是什么?或者,如果它甚至可能? 最佳答案 zx
我正在尝试创建一个 QR 码,如果在安装了 Facebook 应用程序的手机上扫描,Facebook 应用程序将直接转到 QR 码中保存的类似页面。我尝试过什么this website已经说过了,但没
我使用python-qrcode和reportlab,我想生成一个二维码并显示它而不是将它保存为图像。 def member_card(request): response = HttpRes
好的,我正在使用这个 Javascript QR 代码生成器:https://github.com/davidshimjs/qrcodejs 开箱即用,您可以通过将其包含在页面上来获得字符串输出。
我在检测二维码在哪里时遇到问题。 我需要在它周围画边框。 我使用 AVMetadataObject 贝塞尔曲线路径,但它不起作用。 请帮助我。 - (void)captureOutput:(AVCap
我正在使用已弃用的 Camera 类。我在 onPreviewFrame(byte[] data, Camera camera) 方法中进行处理。 Zbar 扫描仪没有触发“尝试反向”扫描的选项。我发
1、搭个界面 2、写代码 ? 1
我正在尝试使用 pyqrcode 库生成一个 vCard 二维码,但我不知道该怎么做。 我已经阅读了他们的文档 5 次,其中没有提到 vCard,只提到了 URL,在互联网上,我只能找到关于 wifi
我是一名优秀的程序员,十分优秀!