小编Mic*_*l B的帖子

如何使angularJS ng-model与select元素中的对象一起工作?

selectoption元素传递对象时,我对元素上的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)

angularjs angularjs-ng-repeat

16
推荐指数
1
解决办法
4万
查看次数

Google Maps Dircetions API - 到货时间?

我使用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调用:

https://maps.googleapis.com/maps/api/directions/json?origin=Bielefeld&destination=Dortmund&arrival_time=1460836800&key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxx

最好问候迈克尔

在此输入图像描述

google-maps google-api google-directions-api

8
推荐指数
0
解决办法
3579
查看次数

Android在BT连接上强行杀死我的启动器

我用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

8
推荐指数
1
解决办法
828
查看次数

Cordova媒体插件 - 停止流式传输 - release()冻结设备

我使用cordova 6.4.0cordova-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 cordova cordova-media-plugin

7
推荐指数
1
解决办法
1216
查看次数

Android-更改compileSdkVersion会导致错误

我正在使用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.Material
  • cannot resovle symbol android:TextAppearance.Material.Body1
  • cannot resovle symbol android:TextAppearance.Material.Body2
  • cannot 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 gradle android-studio build.gradle

5
推荐指数
1
解决办法
2684
查看次数

访问 USB-NFC 读卡器上的卡模拟模式

我有一台运行 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)

android nfc mifare ndef hce

5
推荐指数
1
解决办法
2593
查看次数

Angular7-两次键入相同的值时,[ngModel]不会在组件中更新

最小的Stackblitz示例

https://stackblitz.com/edit/angular-mqqvz1

在Angular 7 App中,我创建了一个带有<input>字段的简单组件。

当我使用键盘更改输入值时,我希望该值的格式设置为onBlur。-在最小的示例中,我只想向其中添加字符串“ EDIT”

这基本上是有效的:

  • 如果我输入“ test”并模糊该字段,它将更改为“ test EDIT”
  • 如果我输入“ lala”并模糊该字段,它将更改为“ lala 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

5
推荐指数
1
解决办法
2607
查看次数

在Rails中更改scaffold-controller-generator-templates

当我使用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)

ruby-on-rails scaffolding scaffold

4
推荐指数
2
解决办法
1941
查看次数

Cordova - menubutton-event不会开火

我正在开发一个带有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:

  • 返回键
  • 菜单按钮
  • 搜索按钮
  • startcallbutton
  • endcallbutton
  • volumedownbutton
  • volumeupbutton

我希望用户在按下遥控器菜单按钮时进入我的应用程序的设置页面,但不幸的是这个按钮对我不起作用.以下是cordova网站上的说明和示例代码:

document.addEventListener("menubutton", onMenuKeyDown, false);

function onMenuKeyDown() {
  console.log("Menu pressed");
}
Run Code Online (Sandbox Code Playgroud)

我找到了一个名为" keytest " 的APK ,它显示了按下的键.此应用程序识别:

keyCode=KEYCODE_MENU

仍然,科尔多瓦没有解雇这个事件......为什么?

截图Keytest

javascript android cordova

3
推荐指数
1
解决办法
642
查看次数

AngularJS指令检测传入的模型属性更改

我有一个隔离范围的指令。我想检测作为父作用域上的变量的属性的更改。

到目前为止,我有以下内容:

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有效,但是我需要它与隔离范围一起使用。

directive angularjs

2
推荐指数
1
解决办法
2912
查看次数

从 Android 应用程序调试 SQLite 数据库

我正在后台编写一个带有 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)

比我的机器上有数据库,我终于可以打开它了。

我的问题是:有更好/更快的方法吗?我可以以某种方式直接访问设备上的数据库吗?

database sqlite android adb

1
推荐指数
1
解决办法
2008
查看次数

Android上的Cordova应用程序 - 屏幕可能无法入睡

我正在使用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)

android cordova android-4.4-kitkat

0
推荐指数
1
解决办法
1878
查看次数

Java中的ArrayList - 部分检查元素

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)

java android arraylist

-1
推荐指数
1
解决办法
191
查看次数