小编tom*_*him的帖子

Phonegap KeyboardShrinksView和固定在iOS上的位置未正确应用

我使用2.9.0版本的Phonegap,我希望当键盘出现时,我的WebView会像在Android phonegap应用程序中那样缩小.我将页脚和页眉元素固定在固定位置,当键盘打开时会导致故障(页脚和页眉松开其固定位置状态).

根据phonegap文档,我认为KeyboardShrinksView设置可以解决这个问题:http://docs.phonegap.com/en/2.9.0rc1/guide_project-settings_ios_index.md.html#Project%20Settings%20for%20iOS

但经过大量的尝试,我无法使其工作,WebView不会缩小.

我想也许它可能来自我的config.xml上设置的其他偏好之间的冲突:

config.xml中

<gap:platform name="ios" />
<gap:platform name="android" />

<preference name="fullscreen" value="false" />
<preference name="webviewbounce" value="false" />
<preference name="orientation" value="portrait" />
<preference name="KeyboardShrinksView" value="true" />
Run Code Online (Sandbox Code Playgroud)

或者它可能来自元标记定义,特别是视口:

的index.html

<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" /> 
Run Code Online (Sandbox Code Playgroud)

你知道它为什么不起作用吗?或者你有解决方法吗?

编辑:我看到它在KeyboardShrinksView = true时改变了一些东西,但是当键盘打开时,它隐藏了我的内容的底部(包括我的页脚和字段),而不是调整整个内容的大小.我希望它将我的页脚放在键盘顶部,对不对?

谢谢您的帮助

keyboard webview ios cordova

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

Mongoose:如果元素已经存储,请不要插入

我正在使用MongoDB和Mongoose与Express来存储我通过Twitter API检索的推文.

我想避免保存重复的推文.我正在做这样的事情:

TweetsModel.find({tweet_id: tweet.tweet_id}, function (err, tweets) {
    if(tweets.length > 0){
        cb('Tweet already exists',null);
    } else{
        tweet.save(function(err){
            cb(err,user);
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

我的问题是:出于性能原因,有没有办法使用Mongoose来避免做两个请求?一个找到一个保存?

知道我不想更新推文,如果它已经存在.

谢谢

mongoose mongodb express

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

Modularize AngularJS应用程序:一个或多个AngularJS模块?

我尝试使用AngularJS构建模块化应用程序.我的第一个想法是通过functionnality将每个模块分组为这种文件夹结构:

/core 
    controllers.js
    directives.js
    app.js
/modules
     /users
        controllers.js
        directives.js
     /invoices
        controllers.js
        directives.js
     /messages        
        controllers.js
        directives.js
     ...
Run Code Online (Sandbox Code Playgroud)

请注意,"core"文件夹包含将始终位于应用程序中的基本功能.其他模块可以单独添加或删除.

由于我的应用程序很大,我也想使用延迟加载.我实现了这个解决方案:http://ify.io/lazy-loading-in-angularjs/在我看来实际上是最简单的方法.问题是它只对控制器,服务,指令进行延迟加载......但不适用于AngularJS模块.

我知道还有另一种允许延迟加载Angular模块的方法(http://blog.getelementsbyidea.com/load-a-module-on-demand-with-angularjs/)但是我认为这太过于hacky,因为它使用Angular的核心方法.

我的问题是:在我的情况下,为我的每个模块使用不同的AngularJS模块是否有意义,如下所示:

angular.module('core', ['ngRoute', 'users', 'invoices', 'messages'])
angular.module('users')
angular.module('invoices')
angular.module('messages')
Run Code Online (Sandbox Code Playgroud)

这种方法的优点是什么?AngularJS模块目前是否有用 - 仅适用于Angular的第三方模块?

我问这个,因为AngularJS 2.0将支持本机延迟加载.来自Google的MiškoHevery说"你应该按视图分组,因为在不久的将来,视图将被延迟加载",并且我们应该为每个应用程序使用一个模块,请参阅此处:https://www.youtube.com/watch? v =&ZhfUv0spHCY T = 34m19s

对于大型应用程序来说,只为我的应用程序使用一个模块是正确的,如下所示:

angular.module('core', ['ngRoute']);
Run Code Online (Sandbox Code Playgroud)

然后根据路由或视图延迟加载我的控制器,服务和指令?

modularity lazy-loading angularjs

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

AngularJS表单验证:通过ui.router状态更改$ dirty值更改

我的用例:

我有一个使用ui-router的多步骤表单,如下面的plunkr.我使用ng-form来验证AngularJS提供的信息,比如$ valid,$ dirty等.

每次单击"下一部分"按钮后,我将表单数据发送到服务器以便检索它,以防用户在完成之前退出表单.

如果用户提交两次第一步,我只发送编辑过的数据(如果$ dirty值为true).所有这些都不在plunkr中,我选择向您展示一个简单的表单,但我的表单可以包含一百个字段(收音机,复选框,输入,选择等).

重现问题的步骤(plunkr):

  1. 填写第1步并转到下一部分
  2. 检查xbox收音机并单击该号码返回步骤1 myMultiStepForm.interests.xbox.$dirty = true
  3. 回到第2步 myMultiStepForm.interests.xbox.$dirty = false

为什么$ dirty值变为false?我想这是因为<ng-form>再次显示并重置所有验证数据.

有办法避免这种情况吗?或者除了<ng-form>处理字段子集的验证之外的其他东西?

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

angularjs angular-ui-router angularjs-ng-form

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

为node.js Web服务应用程序安装服务器

我已经构建了一个与node.js一起运行的应用程序,它允许通过REST API检索一些数据.

我想把它放在个人计算机(Windows)上,但我不知道如何安装服务器以及我需要在线提供我的应用程序.

有人可以解释一下这样做的步骤吗?我知道有些在线服务存在像Heroku,但我想自己做.

谢谢

api rest host node.js

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

具有@ManyToOne关系的QueryDSL投影

我正在使用OpenJPA和QueryDSL,我试图通过使用QueryDSL的bean投影功能来避免操作Tuple对象.我有例如这两个实体,具有@ManyToOne关系.

@Entity
public class Folder {
    private Long id;
    private String name;
    private String path;
    @ManyToOne
    @JoinColumn(name = "FK_FILE_ID")
    private File file;
}

@Entity
public class File {
    private Long id;
    private String fileName;
}
Run Code Online (Sandbox Code Playgroud)

当我执行此查询时:

List<Folder> listFolders = query.from(folder)
.list(Projections.bean(Folder.class, folder.name, folder.file.fileName));
Run Code Online (Sandbox Code Playgroud)

我有一个错误,说Folder对象不包含fileName属性.

我理解QueryDSL正在做什么,因为它是一个简单的"平面"投影,但我想知道是否可以用查询找到的值填充我的folder.file对象的fileName属性.

注意:我知道我可以为我的Folder类定义构造函数并使用此方法:

query.list(ConstructorExpression.create(Folder.class, folder.name,
folder.file.fileName));
Run Code Online (Sandbox Code Playgroud)

但是如果可能的话我想避免这种情况,因为它迫使我在我的投影中为我想要的字段的N组合定义N构造函数.

jpa projection dto openjpa querydsl

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

替换所有出现的“;;” 在 Java 中的字符串中

我正在寻找一种单行技巧来执行以下操作:

我有这个字符串"Car;;;;Plane"并想要这个结果"Car;NULL;NULL;NULL;Plane"

我正在做,myString.replaceAll(";;", ";NULL;");但结果是"Car;NULL;;NULL;Plane",我想它只找到了两次出现的模式,我希望它被视为出现了三次。

最好/最快的方法是什么?

java regex replace

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