小编akn*_*akn的帖子

ngModel - 如何在不同的浏览器中处理它的不同行为?

我正在尝试处理ngModel不同浏览器中的不同行为.

我的指令包装jqueryUI自动完成,并在其select调用的事件上ngModel.$setViewValue(selectedItem.id).自动完成功能允许用户通过鼠标单击或按enter键盘选择项目.

如果建议的项目是:

{
  "name": "Apple",
  "id": "1000"
}
Run Code Online (Sandbox Code Playgroud)

我希望在选择之后,ngModel值将被选为项目id- 1000.

  • 在Chrome中它的工作原理确定-它集$viewValue$modelValue正确的($modelValue=1000).

  • 在Firefox中它将模型设置为Chrome($modelValue=1000),但是当我点击其他地方时 - 使模糊(然后浏览器可能触发change事件),模型更改并且它变得与可见输入值($modelValue='Apple')相同.

  • 在IE 11中,只有当我通过鼠标单击选择项目时,它才会设置模型正确.如果按下选择它enter,模型将变为可见输入值($modelValue='Apple')

这是plunkr:http://plnkr.co/edit/o2Jkgprf8EakGqnpu22Y? p =preview

我想在每个浏览器中达到相同的行为.如何处理那些问题?

javascript jquery jquery-ui angularjs angular-ngmodel

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

array_unique函数之后的数组作为JSON响应中的对象返回

我试图合并两个数组省略重复的值,并将其作为一个JSON与Slim框架返回.我做了以下代码,但结果我得到unique了JSON的属性作为对象 - 而不是数组.我不知道为什么会这样,我想避免它.我该怎么做?

我的代码:

$galleries = array_map(function($element){return $element->path;}, $galleries);
$folders = array_filter(glob('../galleries/*'), 'is_dir');

function transformElems($elem){
    return substr($elem,3);
}           
$folders = array_map("transformElems", $folders);

$merged = array_merge($galleries,$folders);
$unique = array_unique($merged); 

$response = array(
  'folders' => $dirs, 
  'galleries' => $galleries, 
  'merged' => $merged, 
  'unique' => $unique);
echo json_encode($response);
Run Code Online (Sandbox Code Playgroud)

作为JSON响应,我得到:

{
folders: [] //array
galleries: [] //array
merged: [] //array
unique: {} //object but should be an array
}
Run Code Online (Sandbox Code Playgroud)

http://i.imgur.com/cfHy8Od.png

似乎array_unique返回了一些奇怪的东西,但是原因是什么?

php slim

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

使用youtube iframe进行Angular ng-swipe

我正在尝试用图像和youtube视频构建简单的滑块.我想让它在触摸设备上工作正常,所以我想使用ng-swipe-*angular的ngTouch模块.不幸的是,滑动无法在youtube的iframe上运行.我试着设置较低z-index: -10;,但后来我无法播放视频.

你知道如何解决这个问题吗?

有一个片段:

var app = angular.module('app', ['ngTouch']);

app.controller('ctrl', function($scope) {
  $scope.msg = function(msg) {
    alert(msg);
  }
});
Run Code Online (Sandbox Code Playgroud)
.ok {
  width: 300px;
  height: 100px;
  background: green;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://code.angularjs.org/1.4.8/angular.min.js"></script>
<script src="https://code.angularjs.org/1.4.8/angular-touch.min.js"></script>
<div ng-app="app">
  <div ng-controller="ctrl" ng-swipe-right="msg('right')" ng-swipe-left="msg('left')">
    <div class="ok">swipe works here</div>
    <div>
      <iframe width="300" height="200" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

(测试它的最佳方法是在Chrome开发者控制台中运行它并在触摸设备上模拟)

javascript youtube angularjs angularjs-ng-touch

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

节点重定向不工作角度

嗨,我是节点的新手,我正在构建一个简单的MEAN堆栈应用程序,以减少我发送这样的前端文件的代码

app.use(express.static(path.join(__dirname, 'public')));
Run Code Online (Sandbox Code Playgroud)

我还构建了一个简单的中间件,用于简单的身份验证

requireLogin = function (req, res, next) {
  if (!req.user) {
      console.log('redirecting :)');
      res.redirect('/');
  } else {
      next();
  }
};

app.use('/rooms',requireLogin);
Run Code Online (Sandbox Code Playgroud)

我正试图在有角度的路线上使用这个中间件.但是当我在我的角度应用程序中导航时它不起作用(当我直接将URL放到地址栏时它可以工作)我还删除了由角度添加的/#/.

    $locationProvider.html5Mode({
    enabled: true,
    requireBase: false
});
Run Code Online (Sandbox Code Playgroud)

我正在使用ui-router进行路由.

node.js express angularjs angular-ui-router

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

Spring Boot + Gradle - 在哪里放置环境配置?

我正在使用Spring Boot中的一个简单应用程序.它是在本地开发的(并且有效):

  • 摇篮,
  • 具有连接属性的H2数据库application.properties放置在项目的根目录中
  • 行家文件夹结构(src/main/groovy,src/main/resources等)

现在是我想将它部署到Openshift的时候,所以我需要创建一个带有MySQL设置的附加生产配置,但我不知道在哪里放置它以及如何使用它.

所以我的问题是:

  1. 我应该怎么做才能有两种不同的配置(developmentproduction)?
  2. 在哪里放配置文件?
  3. 我必须改变一些东西build.gradle吗?
  4. 如何使用开发或生产配置构建应用程序?
  5. 如何使用开发或生产配置运行应用程序?
  6. 创建多个环境配置的最佳做法是什么?

我是一个前端开发者,所有这些后端的东西对我来说并不明显,所以请在你的答案中考虑它.

这是我目前的内容 build.gradle

plugins {
    id 'org.springframework.boot' version '1.5.3.RELEASE'
    id 'java'
    id 'groovy'
}

jar {
    baseName = 'myproject'
    version =  '0.0.1-SNAPSHOT'
}

repositories {
    jcenter()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile 'mysql:mysql-connector-java'
    compile("com.h2database:h2")
    compile("org.springframework.boot:spring-boot-starter-security")
    compile('io.jsonwebtoken:jjwt:0.7.0')
    compile localGroovy()
}
Run Code Online (Sandbox Code Playgroud)

java spring gradle build.gradle spring-boot

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

在Oauth2 Implicit Grant Flow和第三方cookie中刷新令牌

我想知道如何在主要浏览器默认禁用第三方cookie时,在2019年处理Oauth2隐式授权流程中的刷新令牌.

一些细节:

目前的设置:

  • UI SPA应用程序下 ui.example.com

  • 身份提供者(UAA by CloudFoundry)下 uaa.api.example.com

场景:

  • 当用户登录时,身份提供商将cookie设置为域的用户详细信息,uaa.api.example.com并在重定向的Location标头中返回JWT .

  • JWT存储在本地存储器中(for ui.example.com),但它仅在1h内有效,所以我想刷新它.

  • prompt=none发送到IDP授权端点的查询参数可以刷新(过程在Auth0指南中有详细描述(它不是UAA,但流程是相同的)

  • 在每个20米隐藏的iframe中设置了src,uaa.api.exmaple.com/oauth/authorize?prompt=none创建了启动签名过程而无需用户提供其凭据的内容.当进程结束时,响应中返回的新JWT将再次存储在本地存储中.

问题:

  • 当允许第三方cookie时,浏览器会将IDP的cookie添加到iframe发出的请求中,因此流程有效,我在响应中获得新令牌.

  • 如果在浏览器的设置中禁用了第三方Cookie,则iframe无法访问自己的Cookie,因此login_required会返回错误,而不是新的JWT .无法通过iframe访问cookie使得令牌续订无法使用

题:

对于我的第三方Cookie问题,有什么解决方案吗?

如果没有,我可以用来登录和刷新令牌的Implicit Grant流量和SPA的替代品吗?

architecture oauth oauth-2.0 jwt cloudfoundry-uaa

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

在Internet Explorer - AngularJS 1.3中未正确更新ngModel

您好,我有一个奇怪的问题,只出现在角色1.3的IE 11中.

我有一个指令,它使我能够存储ObjectngModel价值input元素.它对AngularJS 1.2没有任何问题,但它不适用于AngularJS 1.3(仅在Internet Explorer中).

它只是代码:

elem.on('input', function(){
   var val = elem.val();
    ngModel.$setViewValue({
        'sampleData': new Date().getTime(),
        'value': val
    });
    scope.$apply();
});
Run Code Online (Sandbox Code Playgroud)

当我在IE中键入文本时,输入将正确的对象设置为模型值几毫秒,但接下来将其更改为字符串.在其他浏览器中,它ngModel正确更新.

你可以在那里看到这种奇怪的行为:

AngularJS 1.2:http://jsfiddle.net/aartek/e6Lvpqj3/(适用于IE,Chrome和Firefox),

AngularJS 1.3:http://jsfiddle.net/aartek/mvx9dbyu/2/(在IE 11中不起作用,适用于Chrome和Firefox)

是什么原因,我该如何解决?

这是我的全部指示:

app.directive('myInput',function(){
    return{
        restrict: 'A',
        require: 'ngModel',
        scope: {},
        priority: 1,
        link: function(scope, elem, attrs, ngModel){
            elem.off('input');
            elem.off('change');

            ngModel.$render = function(){
                var model = {
                    'sampleData': 'sampleData',
                    value: ''
                }                                   
                ngModel.$setViewValue(model);
                elem.val(model.value); …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer angularjs angularjs-ng-model

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

Grails - Bootstrap - 空指针而不是服务

我想在我的应用程序中使用init的数据生成器.它在使用.save()方法创建对象时工作正常,但是当我想使用专用服务时它不起作用,因为空指针而不是注入服务.那是我的代码:

我在conf/spring中定义了DataGenerator bean

beans = {
    dataGenerator(DataGenerator)
}
Run Code Online (Sandbox Code Playgroud)

Bootstrap.groovy看起来像:

class BootStrap {
  def dataGenerator
  def init = { servletContext ->
    dataGenerator.generateData()
  }
}
Run Code Online (Sandbox Code Playgroud)

在`DataGenerator'中我有:

class DataGenerator{
    BookService bookService

    def generateData() {
        log.info("Generating books")
        createBooks()
    }

    def createBooks(){
        (1..40).each() {
            CreateBookCommand command = new CreateBookCommand()
            /* some command populate code*/
            bookService.create(command);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,我不能调用create()方法,因为bookService总是如此null

BookService是简单的grails服务,有一些依赖,当然放在 grails-app/services

class BookService {    
    UserService userService
    SpringSecurityService springSecurityService

    def create(CreateBookCommand command){
        Book book = new Book()
        command.bindTo(book)
        book.save(flush:true, …
Run Code Online (Sandbox Code Playgroud)

grails

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

launchd - 如何保持脚本在后台运行

我有一个简单的脚本,可以在文件发生更改时将其上传到保管箱。我想在系统启动时运行它并将其保留在后台以便让脚本监视文件。

我创建了一个 plist,但它运行脚本并以代码 0 退出。

列表

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.launchd.dropbox_uploader</string>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>-c</string>
        <string>~/dropbox-uploader.sh; wait</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

wait(在命令中使用或不使用都不起作用)

脚本(它工作正常并且在命令行中运行时不会退出)

#!/bin/sh

fswatch -o ~/file.txt | xargs -n1 -I{} curl -X POST https://content.dropboxapi.com/2/files/upload \
    --header 'Authorization: Bearer XXXXX' \
    --header 'Content-Type: application/octet-stream' \
    --header 'Dropbox-API-Arg: {"path":"/backup/file.txt","strict_conflict":false,"mode":{".tag":"overwrite"}}' \
    --data-binary @'~/file.txt'
Run Code Online (Sandbox Code Playgroud)

launchtl list输出

 ~> launchctl list | grep com.example                                                                                                                       (base) 
-   0   com.example.launchd.dropbox_uploader
Run Code Online (Sandbox Code Playgroud)

如何实现让它在后台运行的目标?我不确定我的 plist 或脚本是否有问题。

macos bash launchd plist

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