我正在使用AngularJS开始我的第一个PhoneGap项目.它是一个数据库驱动的应用程序,使用REST API作为后端.首先,我根本不打算在本地存储数据,因此没有Internet就不会有太大的作用.
但是,我最终希望它能在本地存储数据,并在互联网可用时同步,因为我知道我个人有时会禁用手机上的互联网连接(飞机,电池电量不足),或者没有酒吧.我想知道你是否可以指出我为这种类型的同步提供一些好的资源.一些推荐的库?或者也许是对陷阱的讨论以及如何环绕它们.我用谷歌搜索了一下,但我想现在,我不知道要问的问题.
此外,我打算先建立互联网依赖,然后添加同步....这是一个好主意,还是我在脚下拍摄自己?我是否需要从一开始就建立同步?
我有人建议首先将应用程序构建为仅限本地的应用程序,而不是仅限于Internet的部分,它具有一定的逻辑性.远程存储对我来说很重要.我知道决定与我的应用目标有很大关系,但从建立这个目标的角度来看,最终的目标是本地存储+互联网存储,以及双向同步,哪些更容易?或者它甚至有所作为?
首先,我正在考虑使用UUID,而不是顺序整数主键.我还想过为每个设备分配一个ID,该ID在它生成的任何键上都有前缀,但这看起来很精致.有人使用过哪种技术?思考?
我想我需要一个好的系统来判断哪些数据已被同步.在客户端,我猜任何创建/编辑的记录都可以标记为同步.但是在服务器端,您有多个客户端,因此不起作用.我想你可以有一个last_updated时间戳,并同步所有更新同步上次成功同步.
在多个地方编辑的记录怎么样?如果两个客户端编辑,然后想要同步,则有一些关于合并的歧义,比如在git或其他版本控制系统中合并分支时.你怎么处理?我想git通过存储每个提交的差异来做到这一点.我想你可以存储差异?我想的越多,听起来就越复杂.我是在过度思考还是在思考它?
客户端存储怎么样?我已经考虑过SQLite或PhoneGap本地存储(http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html).建议?同步将通过REST API,交换JSON,所以我在想一些实际上将数据存储为JSON的东西,或者类似JSON的东西,它很容易转换,会很好.另一方面,如果我不得不交换某种数据差异格式,也许这就是我需要存储的东西?
我一直在阅读这个功能:http://laravel.com/docs/html#form-model-binding
它看起来很整洁,但有几件我不确定的事情.
我是否需要在控制器操作中放置任何代码来处理此表单?那是什么样的?
我想在我的表单中绑定的模型(用户)有一个单独的地址表.所以我希望能够填写用户模型的字段,还能填写相关地址模型的字段.我可以使用表单模型绑定来执行此操作,还是必须手动处理表单?
或者,如果不这样做,我可以对用户字段使用表单模型绑定,但是手动处理地址字段吗?
好的,我正在通过Laravel 4文档来设置两个模型之间的一对多关系.显然,一方应该使用hasMany().但对于另一方,我应该使用hasOne还是belongsTo?有关系吗?有什么区别?为什么两者都存在?
我曾经认为hasOne将是一对一的关系,而且属于一对多的一方.但是在文档中,要在此处插入相关模型:
http://laravel.com/docs/eloquent#inserting-related-models
他们正在使用save()
它似乎只存在于hasOne
和hasMany
关系中,而不是在belongsTo
.它看起来像belongsTo
使用associate()
了相同的目的:
也许我只需要一些关于何时使用belongsTo
vs.的一般背景hasOne
,以及为什么在belongsTo
使用associate()
时hasOne
使用save()
.
编辑:我想我的困惑点是在文档(http://laravel.com/docs/eloquent#inserting-related-models)中,他们使用了:
$post->comments()->save($comment);
Run Code Online (Sandbox Code Playgroud)
我会用到的地方:
$comment->post()->associate($post);
Run Code Online (Sandbox Code Playgroud)
这种或那种方式有优势吗?或者它只是一个在上下文中有意义的问题?
我正在尝试将Rivets.JS集成到我的应用程序中.我正在获取页面中基本表单输入和常规数据的绑定值,但我无法弄清楚如何使用Rivets处理选择drop(向下菜单).
我可以使用每个标记构建一个select,就像在这个JSFiddle中一样:http://jsfiddle.net/eimajenthat/94ca1xht/
但是我想将菜单中的选定值绑定到模型值(在我的小提琴中,我会将truck.job_id绑定到选择中).
这是我的JS:
$(document).ready(function(){
window.view = rivets.bind($('#contentWrap'),{
truck:{id:1,job_id:3},
jobs:[
{id:1,job_number:'thing1'},
{id:2,job_number:'thing2'},
{id:3,job_number:'thing3'},
{id:4,job_number:'thing4'},
]
});
});
Run Code Online (Sandbox Code Playgroud)
这是我的HTML:
<div id="contentWrap">
<select>
<option rv-each-job="jobs" rv-value="job.id">{ job.job_number }</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
奖励积分:我的应用程序中的所有选择元素都使用Chosen进行了扩充.这意味着每当我通过JavaScript更改选项或选择时,我都需要触发Chosen的更新,以便用户查看它,如下所示:
$('#my-select').trigger('liszt:updated');
Run Code Online (Sandbox Code Playgroud)
每当用于选项的模型(我的小提琴中的作业)被更新,或者select(trucks.job_id)的值被更新时,我如何触发上面的代码?