select从option元素传递对象时,我对元素上的ng-model有问题.所以,假设我们有一个表中的列数组columns(表的定义),我们想在这个定义上创建一些过滤器
var columns = [
{name: 'Account ID', type: 'numeric'},
{name: 'Full name', type: 'text'},
{name: 'Date of birth', type: 'date'},
{name: 'Active', type: 'boolean'}
// and so on
];
var filters = [{}];
Run Code Online (Sandbox Code Playgroud)
HTML:
<div class="form-field" ng-repeat="filter in filters">
<select ng-model="filter">
<option value="" disabled>Choose filter</option>
<option ng-repeat="column in columns" ng-value="column">{{column.name}}</option>
</select>
<input type="text" ng-model="filter.value">
</div>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我希望filter得到它的价值column并在其中添加特定数据,所以在某个时刻,我的过滤器可能是这样的:
[
{name: 'Account ID', type: 'numeric', value: 123},
{name: 'Active', type: 'boolean', value: 'Yes'} …Run Code Online (Sandbox Code Playgroud) 我使用Google Directions API计算2个地点之间所需的时间.API为我提供了一个选项departure_time,我可以在其中传递出发时间(或"现在")的时间戳.然后答案是duration_in_traffic.这工作真的很棒.
但是我需要显示用户在他想要在特定时间达到目标时所需的时间.
例如,用户希望在晚上8点(20:00)进入多特蒙德.所以我需要告诉他什么时候他应该开始开车到达他想要的目标.API文档说,有一个参数arrival_time,它完全符合我的需要.不幸的是,他们说这只适用于公共交通工具.
但谷歌地图本身甚至为汽车提供了所需的功能!正如你在屏幕截图中看到的那样:我说我想在20:00进入多特蒙德并且google-maps说,我应该开始'arround 18:30'
那么我如何通过我的应用实现这一目标呢?我需要其他API还是需要传递其他参数?
这是我当前的API调用:
最好问候迈克尔
我用Apache cordova为Android编写了一个启动器应用程序.这是一个类似于信息亭的应用程序,基本上它工作正常.
不幸的是有一个问题:在某些情况下,Android会强制查杀我的应用并立即重新启动它. - 加载大约需要3秒钟,显示白屏.它开始全新(onPause,onResume不被调用).在日志中我找到:
V/WindowManager( 657): Changing focus from Window{42544288 u0 com.android.settings/com.android.settings.SubSettings} to Window{428ad610 u0 com.android.settings/com.android.settings.SubSettings} Callers=com.android.server.wm.WindowManagerService.addWindow:2665 com.android.server.wm.Session.addToDisplay:163 android.view.IWindowSession$Stub.onTransact:111 com.android.server.wm.Session.onTransact:126
I/WindowManager( 657): Gaining focus: Window{428ad610 u0 com.android.settings/com.android.settings.SubSettings}
...
I/ActivityManager( 657): Force stopping com.myapp.name appid=10119 user=0: clear data
I/ActivityManager( 657): Killing 2639:com.myapp.name/u0a119 (adj 7): stop com.myapp.name
I/ActivityManager( 657): Force finishing activity ActivityRecord{42542218 u0 com.myapp.name/.MainActivity t2}
V/ActivityManager( 657): Broadcast: Intent { act=android.intent.action.PACKAGE_RESTARTED dat=package:com.myapp.name flg=0x10 (has extras) } ordered=false userid=0 callerApp=null
V/ActivityManager( 657): Broadcast: Intent { act=android.intent.action.PACKAGE_DATA_CLEARED dat=package:com.myapp.name flg=0x10 (has extras) } …Run Code Online (Sandbox Code Playgroud) android bluetooth cordova android-4.4-kitkat android-5.1.1-lollipop
我使用cordova 6.4.0与cordova-plugin-media用于在Android应用程序流媒体广播站.不幸的是,有一种情况,应用程序不再正常响应.
假设用户想要流式传输无线电,但是当流加载时,他想要中止它(例如,因为流已关闭,或者需要很长时间才能加载).
在这种情况下,我无法取消该过程!
media = new Media("http://direct.franceinfo.fr/live/franceinfo-midfi.mp3?ID=f9fbk29m84", mediaPlayerSuccess, mediaPlayerFail, mediaPlayerStatus);
media.play();
Run Code Online (Sandbox Code Playgroud)
现在我想取消缓冲流的过程,但我无法做到.功能:
media.pause();
media.stop();
Run Code Online (Sandbox Code Playgroud)
在ADB日志中抛出错误消息并调用mediaPlayer-onError回调.
D/AudioPlayer( 3362): AudioPlayer Error: pausePlaying() called during invalid state: 1
...
D/AudioPlayer( 3362): AudioPlayer Error: stopPlaying() called during invalid state: 1
Run Code Online (Sandbox Code Playgroud)
该media.release()命令停止加载流!然而,只是在不停止流的情况下释放流,会导致其他相当大的问题:
如果你调用media.release()媒体对象,大多数时候系统反应非常慢并且挂起几秒钟.但如果经常这样做,系统会完全冻结.这意味着它不再接受远程控制命令.Adb-log仍然有效,但在这种情况下不会显示任何错误.只有POWER按钮仍在工作(它锁定并解锁屏幕).从这种搞砸状态恢复的唯一方法是重启设备.
如果没有播放,我该如何取消媒体流呢?这是插件中的错误吗?
附件是代码片段,我用它来处理媒体流逻辑.如上所述...它基本上有效,但如果你多次调用它会减慢甚至冻结设备.
function radioControl(action, media_src){
//media_src is a webradio-streamurl.
if(action == 'play') {
// Initial Play
if(media === null){
mediaCreateObject(media_src);
}
// If we get PLAY but on antoher station
else …Run Code Online (Sandbox Code Playgroud) 我正在使用Android Studio 1.2.2开发Android应用程序。compileSdkVersion自工作开始以来,我在build.gradle文件中将定义为21。现在我想将其更改为19,因为此软件实际上永远不会安装在运行高于Android 4.4版本的Android设备上
当我尝试将此值更改为19时,该项目不再编译。
更改版本值后,我有:
但是会发生以下错误:
在文件中,/projectpath/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.2.0/res/values-v21/values-v21.xml它标记为103错误,说“无法解析符号”。
值-v21.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- From: file:/usr/local/google/buildbot/repo_clients/https___googleplex-android.googlesource.com_a_platform_manifest.git/lmp-mr1-supportlib-release/frameworks/support/v7/appcompat/res/values-v21/styles_base_text.xml -->
<eat-comment/>
<style name="Base.TextAppearance.AppCompat" parent="android:TextAppearance.Material"/>
<style name="Base.TextAppearance.AppCompat.Body1" parent="android:TextAppearance.Material.Body1"/>
<style name="Base.TextAppearance.AppCompat.Body2" parent="android:TextAppearance.Material.Body2"/>
<style name="Base.TextAppearance.AppCompat.Button" parent="android:TextAppearance.Material.Button"/>
....
Run Code Online (Sandbox Code Playgroud)
cannot resovle symbol android:TextAppearance.Materialcannot resovle symbol android:TextAppearance.Material.Body1cannot resovle symbol android:TextAppearance.Material.Body2cannot resovle symbol android:TextAppearance.Material.Button等等...
是什么导致此错误?我该怎么做才能使其再次编译?
当我改回compileSdkVersion21时,一切又恢复正常。
我的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '23.0.0 rc3'
defaultConfig {
applicationId 'com.appname.id'
minSdkVersion 17
targetSdkVersion 19
versionCode 1 …Run Code Online (Sandbox Code Playgroud) 我有一台运行 Android 4.2 的 Android 平板电脑。此平板电脑没有 NFC 硬件。不过,我有一个外部 USB 读卡器:ACR 1252U,附带Android 库。我在这里问了一些有关我的设置的一般性问题。现在事情变得更具体了,我需要问另一个人。在上一个问题中,我发现我可以使用ACS Android 库来访问读卡器卡模拟功能。
我的第一个目标是让该阅读器模拟包含 URL 的 NFC 标签。任何支持 NFC 的 Android 手机都应该能够扫描此模拟标签并自动打开浏览器。我已经测试过它,它可以与真实的(物理)标签一起使用。但不幸的是我无法正确模拟这个标签......
现在我写了一个Android应用程序,但我陷入困境。根据读者API(PDF),我可以通过发送命令使其进入卡模拟模式
E0 00 00 40 03 01 00 00
Run Code Online (Sandbox Code Playgroud)
当我这样做时,它给了我答案:
E1 00 00 00 03 01 01 01
Run Code Online (Sandbox Code Playgroud)
这确认它处于卡模拟模式。现在,通过 Android 应用程序,我可以扫描模拟标签,该标签被识别为“NXP MIFARE Ultralight”标签。
我现在的问题是,如何向标签提供 URL。根据阅读器API(第5.10.3节),我需要发送命令:
E0 00 00 60 13 01 01 00 0F D1 01 0B 55 01 67 6F 6F 67 6C 65 …Run Code Online (Sandbox Code Playgroud) https://stackblitz.com/edit/angular-mqqvz1
在Angular 7 App中,我创建了一个带有<input>字段的简单组件。
当我使用键盘更改输入值时,我希望该值的格式设置为onBlur。-在最小的示例中,我只想向其中添加字符串“ EDIT”。
这基本上是有效的:
但是, 当我键入“测试”-模糊(有效)并再次键入“测试”时,它将不再起作用!
该onInputUpdate()功能全被调用(你可以看到它在控制台日志),变量inputValue被更新(你可以看到它的组件{{inputValue}}),但是输入值不会改变!
我希望它是“测试编辑”,但它保持“测试”。
当我键入另一个字符串时,它可以工作,但是连续两次在同一字符串中输入却不起作用。这是为什么?我怎样才能解决这个问题?
component.html
{{inputValue}} <br />
<input type="text"
[ngModel]="inputValue"
(ngModelChange)="onInputUpdate($event)"
[ngModelOptions]="{ updateOn: 'blur' }"/>
Run Code Online (Sandbox Code Playgroud)
component.ts
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class AppComponent {
inputValue = "teststring";
constructor(
private changeDetectorRef: ChangeDetectorRef,
) {}
public ngOnInit() {
this.inputValue = "initial";
}
public onInputUpdate(inputValue: string) …Run Code Online (Sandbox Code Playgroud) angular-ngmodel angular-components angular angular-changedetection angular7
当我使用Rails脚手架生成器创建我的Rails文件时,它会创建一个控制器文件.例如
rails generate scaffold potato
产生:
app/controllers/potatos_controller.rb
对于我的项目,我希望这个文件更具体一些.例如,我想更改此自动生成的操作:
def create
@potato = Potato.new(potato_params)
respond_to do |format|
if @potato.save
format.html { redirect_to @potato, notice: 'Potato was successfully created.' }
format.json { render :show, status: :created, location: @potato }
else
format.html { render :new }
format.json { render json: @potato.errors, status: :unprocessable_entity }
end
end
end
Run Code Online (Sandbox Code Playgroud)
使用I18n翻译而不是硬编码'马铃薯已成功创建'.另外我想改变一些缩进,因为rubocop总是抱怨它.
我找到了脚手架 - 发电机的模板,现在想要进行更改.为此,我在我的项目中创建了一个文件:
lib/templates/rails/scaffold_controller/templates/controller.rb
在这个文件中,我做了我的更改.(例如我改变了界限
redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully created.'" %>
Run Code Online (Sandbox Code Playgroud)
至
redirect_to @<%= singular_table_name %>, notice: <%= …Run Code Online (Sandbox Code Playgroud) 我正在开发一个带有cordova的Android应用程序.android 4.4设备与蓝牙遥控器连接.
在文档的帮助下,我能够捕获一些按钮,例如"volume-up"-key:
document.addEventListener("volumeupbutton", onVolumeUpKeyDown, false);
function onVolumeUpKeyDown() {
console.log("Volume up pressed");
}
Run Code Online (Sandbox Code Playgroud)
根据cordova文档,还有一些其他可用密钥的Eventlisteners:
我希望用户在按下遥控器菜单按钮时进入我的应用程序的设置页面,但不幸的是这个按钮对我不起作用.以下是cordova网站上的说明和示例代码:
document.addEventListener("menubutton", onMenuKeyDown, false);
function onMenuKeyDown() {
console.log("Menu pressed");
}
Run Code Online (Sandbox Code Playgroud)
我找到了一个名为" keytest " 的APK ,它显示了按下的键.此应用程序识别:
keyCode=KEYCODE_MENU
仍然,科尔多瓦没有解雇这个事件......为什么?
我有一个隔离范围的指令。我想检测作为父作用域上的变量的属性的更改。
到目前为止,我有以下内容:
var app = angular.module("app", []);
app.controller("ctrl", function($scope, $timeout) {
$timeout(function() {
console.log("called");
$scope.isReady = true;
$scope.$apply();
}, 2000);
});
app.directive("car", function($log) {
return {
scope: {
make: "=carMake"
},
restrict: 'E',
template: "<strong ng-bind='make'></strong>",
link: function(scope, elem, attrs) {
scope.$watch(attrs.shouldDo, function(value) {
var val = value || null;
if (val) {
$log.info(scope.$eval(attrs.shouldDo));
}
}, true);
}
}
});
Run Code Online (Sandbox Code Playgroud)
http://fiddle.jshell.net/8Qhuk/
如果我将范围设置为false有效,但是我需要它与隔离范围一起使用。
我正在后台编写一个带有 SQLite 数据库的 Android 应用程序。此数据库由应用程序创建,并存储在设备的默认目录中:
shell@android: ls /data/data/com.package.example/databases #
MyDb.db
MyDb.db-journal
Run Code Online (Sandbox Code Playgroud)
在开发过程中,我想测试行是否正确插入/更新,所以我需要查看数据库。有一个非常好的工具叫做SQLite 数据库浏览器(适用于 Win、Mac 和 Linux)。
使用这个工具,我可以打开数据库、浏览、插入和更新行等等......问题是,我首先需要将数据库从设备复制到我的本地机器:
# On Android Shell
# (Cannot pull directly from /data/-directory)
cp /data/data/com.package.example/databases/MyDb.db /sdcard/
# On developing machine
adb pull /sdcard/MyDb.db
Run Code Online (Sandbox Code Playgroud)
比我的机器上有数据库,我终于可以打开它了。
我的问题是:有更好/更快的方法吗?我可以以某种方式直接访问设备上的数据库吗?
我正在使用cordova构建Android应用程序.此应用程序应以全屏模式运行,屏幕可能永远不会关闭.我对设备进行了完全的根控制 - 所有这些都安装在Android 4.4上 - 安装了应用程序.
我已经设定
Developer options -> Stay awake -> checked
并在
Display->Sleep
我设置了最高值,即30分钟.这些设备都连接到它们的电源上.
我的config.xml如下所示:
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.project.name" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Project </name>
<description>
Project
</description>
<author email="my@email.com">
Test
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
<splash src="res/screen/android/test.png" />
<preference name="Fullscreen" value="true" />
<preference name="KeepRunning" value="true"/> …Run Code Online (Sandbox Code Playgroud) 我ArrayList在Java中有一个简单的问题.
我有一个简单的ArrayList.现在我要检查,如果ArrayList包含某个字符串.我知道contains()将对象作为一个整体进行检查,但我想检查对象的一部分是否具有我正在寻找的字符串.
那么实现这一目标的最佳方法是什么?我的样本在这里说False,我希望它说True.怎么样?
ArrayList<String> test_al = new ArrayList();
test_al.add("hello world");
if(test_al.contains("hello")){
Log.v(LOG_TAG,"True");
}
else{
Log.v(LOG_TAG,"False");
}
Run Code Online (Sandbox Code Playgroud) android ×8
cordova ×4
angularjs ×2
adb ×1
angular ×1
angular7 ×1
arraylist ×1
bluetooth ×1
build.gradle ×1
database ×1
directive ×1
google-api ×1
google-maps ×1
gradle ×1
hce ×1
java ×1
javascript ×1
mifare ×1
ndef ×1
nfc ×1
scaffold ×1
scaffolding ×1
sqlite ×1