我使用的是Android Studio 2.3,手机是华为P9 Lite.我注意到我的logcat没有显示我手机的错误.例如,如果我的代码会崩溃,因为NullPointerException
我在模拟器上运行它我在logcat(字体颜色:红色)和弹出说法中得到异常MyApplication stopped working
,但如果我在手机上运行相同的代码,我只是得到崩溃弹出窗口而没有在logcat中.显示信息消息,但不显示错误.为了在logcat中显示来自手机的错误消息,我需要做什么?
我有下一个用例:用户登录表格,输入姓名,电子邮件和密码,点击注册按钮.之后系统需要检查电子邮件是否被采用并基于该显示错误消息或创建新用户...
我试图使用Room,ViewModel和LiveData来做到这一点.这是我尝试学习这些组件的一些项目,我没有远程api,我会将所有内容存储在本地数据库中
所以我有这些课程:
所以我的想法是将有一个监听器附加到注册按钮,它将调用RegisterViewModel::register()
方法.
class RegisterViewModel extends ViewModel {
//...
public void register() {
validationErrorMessage.setValue(null);
if(!validateInput())
return;
registrationService.performRegistration(name.get(), email.get(), password.get());
}
//...
}
Run Code Online (Sandbox Code Playgroud)
所以这是基本的想法,我也想performRegistration
回到我新建的用户.
最困扰我的是我不知道如何performRegistration
在服务中实现功能
class UsersRegistrationService {
private UsersRepository usersRepo;
//...
public LiveData<RegistrationResponse<Parent>> performRegistration(String name, String email, String password) {
// 1. check if email exists using repository
// 2. if user exists return RegistrationResponse.error("Email is taken")
// 3. if user does not exists create new user …
Run Code Online (Sandbox Code Playgroud) android observer-pattern android-room android-livedata android-architecture-components
我有这个函数试图从缓存中读取一些值。但是如果值不存在,它应该调用替代源 API 并将新值保存到缓存中。但是,服务器非常过载,几乎每次当值不存在时都会创建一个请求(大量 API 调用),并且每个请求都会将新值存储到缓存中。但是,我想要的是能够多次调用 API,但只有一个进程/请求能够将其存储在缓存中:
function fetch_cache($key, $alternativeSource) {
$redis = new Redis();
$redis->pconnect(ENV_REDIS_HOST);
$value = $redis->get($key);
if( $value === NULL ) {
$value = file_get_contents($alternativeSource);
// here goes part that I need help with
$semaphore = sem_get(6000, 1); // does this need to be called each time this function is called?
if( $semaphore === FALSE ) {
// This means I have failed to create semaphore?
}
if( sem_aquire($semaphore, true) ) {
// we have aquired semaphore so …
Run Code Online (Sandbox Code Playgroud) 我想在NativeScript的Absolute Layout中将元素放在屏幕的底部.
我有这个代码:
<AbsoluteLayout>
<maps:mapView
left="0"
top="0"
width="100%"
height="100%"
latitude="{{ map.latitude }}"
longitude="{{ map.longitude }}"
zoom="{{ map.zoom }}"
padding="{{ map.padding }}"
mapReady="onMapReady"
coordinateTapped="onCoordinateTapped"
markerSelect="onMarkerSelect"
shapeSelect="onShapeSelect"
cameraChanged="onMapCameraChanged"/>
<ScrollView
left="0"
top="0"
width="100%"
orientation="horizontal">
<!-- More XML -->
</ScrollView>
<StackLayout
left="0"
bottom="0"
width="100%"
visibility="visible"
orientation="horizontal"
style="background-color: red;">
<Label text="TITLE"></Label>
</StackLayout>
</AbsoluteLayout>
Run Code Online (Sandbox Code Playgroud)
我发现AbsoluteLayout没有底层属性......这是我想要创建的图片:
那么如何排列图片中的项目,特别是底部的项目?
编辑:我应该注意,这个底部矩形的尺寸可能不一定相同....
我正在编写 Android 应用程序,并且正在使用 WordPress REST API v2 从我的 Android 应用程序与 WordPress 进行通信。我已经实现了列出来自单个类别的所有帖子的活动:
http://wordpress.dev/wp-json/wp/v2/posts?categories=X
Run Code Online (Sandbox Code Playgroud)
但是现在我在我的应用程序中添加搜索框,用户可以在其中输入一些文本,现在我需要使用此文本对所有类别执行搜索
我可以使用相同的端点但不同的参数:
http://wordpress.dev/wp-json/wp/v2/posts?search=<SEARCH TEXT>
Run Code Online (Sandbox Code Playgroud)
在我的本地 wordpress 数据库中,我有很多帖子被称为“POST TITLE #XY”和一个被称为“封面照片”
所以如果我执行这个:
http://wordpress.dev/wp-json/wp/v2/posts?search=title,post
Run Code Online (Sandbox Code Playgroud)
我只得到标题中有 post 和 title 的那些,但是如果我再添加一个词:
http://wordpress.dev/wp-json/wp/v2/posts?search=title,post,cover
Run Code Online (Sandbox Code Playgroud)
我的帖子为零...
如何执行搜索并获取包含我在请求中发送的一个或多个关键字的帖子?
我有这个问题:
SELECT * FROM blog
LEFT JOIN (
SELECT blog_id, AVG(value) as blog_rating FROM blog_ratings
GROUP BY (blog_id)
) T ON T.blog_id = blog.id;
Run Code Online (Sandbox Code Playgroud)
我不知道如何用Eloquent写这个.
例如:
Blog::select("*")->leftJoin( /* Here goes derived table */ )->get()
Run Code Online (Sandbox Code Playgroud)
我该如何做到这一点?
Carbon
我对HTML5 输入有问题input[type=datetime-local]
,因为此输入以格式Y-m-d\TH:i
(例如2016-11-20T11:45
)发送数据时间。
我的控制器中有方法:
public function store(ModelStoreFormRequest $request)
{
$model = new Model($request->all());
$model->save();
return redirect->action(/*...*/);
}
Run Code Online (Sandbox Code Playgroud)
我得到例外:
InvalidArgumentException in Carbon.php line 582: Data Missing
1. in Carbon.php line 582
2. at Carbon::createFromFormat('Y-m-d H:i:s', '2016-11-20T11:45') in HasAttributes.php line 709
Run Code Online (Sandbox Code Playgroud)
所以我通过在模型中创建下一个函数解决了这个问题:
public function setStartedAtAttribute($startedAt)
{
if( $startedAt instanceof Carbon ) {
$this->attributes['started_at'] = $startedAt;
return;
}
if( strpos($startedAt, 'T' ) ) {
$this->attributes['started_at'] = Carbon::createFromFormat('Y-m-d\TH:i', $startedAt);
return;
}
$this->attributes['started_at'] = Carbon::createFromFormat('Y-m-d H:i:s', $startedAt);
}
Run Code Online (Sandbox Code Playgroud)
但我不喜欢这个解决方案,不知道是否有更优雅的解决方案?我正在考虑使用 …
我开始在 Android 应用程序上工作,我想使用这个新的 Android 导航组件。此应用程序将具有包含 5 个部分的底部导航视图,并且每个部分都需要保留片段的后台堆栈。就像我在第一部分并导航到搜索结果然后导航到地图一样,现在如果我在底部导航视图中单击个人资料部分然后返回到第一部分,我仍然需要在地图屏幕上。所以我发现了这个中等文章这解释了此问题的一种可能解决方案,即拥有 5 个 NavHostFragment,并根据您所在的部分显示/隐藏它们。还有一件事是,当你导航到一些片段时,我需要隐藏底部导航视图......所以我创建了一个新项目来尝试一些东西,我得到了一些奇怪的结果。我不能完全理解fitsSystemWindows
属性是如何工作的,我有一些奇怪的行为......
第一件事是第四张图片工具栏中的标题有一些顶部边距,我不知道为什么......我创建了一个没有片段的全新项目,只有一个具有完全相同布局的主要活动,我没有顶部工具栏中标题的边距。
第二件事是,当我从 Safari 页面返回搜索结果(第 4 和第 5 个图像)时,底部导航视图无缘无故地显示了一半......
如何修复第 4 个和第 5 个图像?还有一个关于fitSystemWindows
属性的问题。第一张图片上的搜索按钮不应该在状态栏下方吗?由于fitSystemWindows=true
未应用于ConstraintLayout -> FrameLayout -> ExploreFragment's ConstraintLayout
. 将fitSystemWindows
属性添加到 XML的唯一位置是在fragment_safari.xml
文件中。
注意:我需要支持的最低 Android API 级别是 21(Lollipop 及以上)。
这是代码:
我正在使用的主题
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowBackground">@color/colorWindowBackground</item>
</style>
Run Code Online (Sandbox Code Playgroud)
主活动.kt
class MainActivity : AppCompatActivity() {
// ...
override fun onCreate(savedInstanceState: …
Run Code Online (Sandbox Code Playgroud) android android-collapsingtoolbarlayout bottomnavigationview android-architecture-navigation
我的 Flutter 应用程序中有以下代码:
response = await http.post(uri, body: target.parameters, headers: headers);
return SeatsMapDecoder.getFromJson(json.decode(response.body));
Run Code Online (Sandbox Code Playgroud)
结束这个请求的响应是这样的:
{"reservations":{"reserved":[439,442,443,22,23,24,25],"paid":[]},"data":{"id":1,"start_date":"25.10.2019","start_time":"20:00","price":"4.50","auditorium":{"id":1,"name":"Velika Sala","sections":[{"id":1,"auditorium_id":1,"name":"Parter I - XI","rows":[[{"id":1,"row":1,"number":1},{"id":2,"row":1,"number":2},{"id":3,"row":1,"number":3},{"id":4,"row":1,"number":4},{"id":5,"row":1,"number":5},{"id":6,"row":1,"number":6},{"id":7,"row":1,"number":7},{"id":8,"row":1,"number":8},{"id":9,"row":1,"number":9},{"id":10,"row":1,"number":10},{"id":11,"row":1,"number":11},{"id":12,"row":1,"number":12},{"id":13,"row":1,"number":13},{"id":14,"row":1,"number":14},{"id":15,"row":1,"number":15},{"id":16,"row":1,"number":16},{"id":17,"row":1,"number":17}],[{"id":18,"row":2,"number":1},{"id":19,"row":2,"number":2},{"id":20,"row":2,"number":3},{"id":21,"row":2,"number":4},{"id":22,"row":2,"number":5},{"id":23,"row":2,"number":6},{"id":24,"row":2,"number":7},{"id":25,"row":2,"number":8},{"id":26,"row":2,"number":9},{"id":27,"row":2,"number":10},{"id":28,"row":2,"number":11},{"id":29,"row":2,"number":12},{"id":30,"row":2,"number":13},{"id":31,"row":2,"number":14},{"id":32,"row":2,"number":15},{"id":33,"row":2,"number":16}],[{"id":34,"row":3,"number":1},{"id":35,"row":3,"number":2},{"id":36,"row":3,"number":3},{"id":37,"row":3,"number":4},{"id":38,"row":3,"number":5},{"id":39,"row":3,"number":6},{"id":40,"row":3,"number":7},{"id":41,"row":3,"number":8},{"id":42,"row":3,"number":9},{"id":43,"row":3,"number":10},{"id":44,"row":3,"number":11},{"id":45,"row":3,"number":12},{"id":46,"row":3,"number":13},{"id":47,"row":3,"number":14},{"id":48,"row":3,"number":15},{"id":49,"row":3,"number":16},{"id":50,"row":3,"number":17}],[{"id":51,"row":4,"number":1},{"id":52,"row":4,"number":2},{"id":53,"row":4,"number":3},{"id":54,"row":4,"number":4},{"id":55,"row":4,"number":5},{"id":56,"row":4,"number":6},{"id":57,"row":4,"number":7},{"id":58,"row":4,"number":8},{"id":59,"row":4,"number":9},{"id":60,"row":4,"number":10},{"id":61,"row":4,"number":11},{"id":62,"row":4,"number":12},{"id":63,"row":4,"number":13},{"id":64,"row":4,"number":14},{"id":65,"row":4,"number":15},{"id":66,"row":4,"number":16}],[{"id":67,"row":5,"number":1},{"id":68,"row":5,"number":2},{"id":69,"row":5,"number":3},{"id":70,"row":5,"number":4},{"id":71,"row":5,"number":5},{"id":72,"row":5,"number":6},{"id":73,"row":5,"number":7},{"id":74,"row":5,"number":8},{"id":75,"row":5,"number":9},{"id":76,"row":5,"number":10},{"id":77,"row":5,"number":11},{"id":78,"row":5,"number":12},{"id":79,"row":5,"number":13},{"id":80,"row":5,"number":14},{"id":81,"row":5,"number":15},{"id":82,"row":5,"number":16},{"id":83,"row":5,"number":17}],[{"id":84,"row":6,"number":1},{"id":85,"row":6,"number":2},{"id":86,"row":6,"number":3},{"id":87,"row":6,"number":4},{"id":88,"row":6,"number":5},{"id":89,"row":6,"number":6},{"id":90,"row":6,"number":7},{"id":91,"row":6,"number":8},{"id":92,"row":6,"number":9},{"id":93,"row":6,"number":10},{"id":94,"row":6,"number":11},{"id":95,"row":6,"number":12},{"id":96,"row":6,"number":13},{"id":97,"row":6,"number":14},{"id":98,"row":6,"number":15},{"id":99,"row":6,"number":16}],[{"id":100,"row":7,"number":1},{"id":101,"row":7,"number":2},{"id":102,"row":7,"number":3},{"id":103,"row":7,"number":4},{"id":104,"row":7,"number":5},{"id":105,"row":7,"number":6},{"id":106,"row":7,"number":7},{"id":107,"row":7,"number":8},{"id":108,"row":7,"number":9},{"id":109,"row":7,"number":10},{"id":110,"row":7,"number":11},{"id":111,"row":7,"number":12},{"id":112,"row":7,"number":13},{"id":113,"row":7,"number":14},{"id":114,"row":7,"number":15},{"id":115,"row":7,"number":16},{"id":116,"row":7,"number":17}],[{"id":117,"row":8,"number":1},{"id":118,"row":8,"number":2},{"id":119,"row":8,"number":3},{"id":120,"row":8,"number":4},{"id":121,"row":8,"number":5},{"id":122,"row":8,"number":6},{"id":123,"row":8,"number":7},{"id":124,"row":8,"number":8},{"id":125,"row":8,"number":9},{"id":126,"row":8,"number":10},{"id":127,"row":8,"number":11},{"id":128,"row":8,"number":12},{"id":129,"row":8,"number":13},{"id":130,"row":8,"number":14},{"id":131,"row":8,"number":15},{"id":132,"row":8,"number":16}],[{"id":133,"row":9,"number":1},{"id":134,"row":9,"number":2},{"id":135,"row":9,"number":3},{"id":136,"row":9,"number":4},{"id":137,"row":9,"number":5},{"id":138,"row":9,"number":6},{"id":139,"row":9,"number":7},{"id":140,"row":9,"number":8},{"id":141,"row":9,"number":9},{"id":142,"row":9,"number":10},{"id":143,"row":9,"number":11},{"id":144,"row":9,"number":12},{"id":145,"row":9,"number":13},{"id":146,"row":9,"number":14},{"id":147,"row":9,"number":15},{"id":148,"row":9,"number":16},{"id":149,"row":9,"number":17}],[{"id":150,"row":10,"number":1},{"id":151,"row":10,"number":2},{"id":152,"row":10,"number":3},{"id":153,"row":10,"number":4},{"id":154,"row":10,"number":5},{"id":155,"row":10,"number":6},{"id":156,"row":10,"number":7},{"id":157,"row":10,"number":8},{"id":158,"row":10,"number":9},{"id":159,"row":10,"number":10},{"id":160,"row":10,"number":11},{"id":161,"row":10,"number":12},{"id":162,"row":10,"number":13},{"id":163,"row":10,"number":14},{"id":164,"row":10,"number":15},{"id":165,"row":10,"number":16}],[{"id":166,"row":11,"number":1},{"id":167,"row":11,"number":2},{"id":168,"row":11,"number":3},{"id":169,"row":11,"number":4},{"id":170,"row":11,"number":5},{"id":171,"row":11,"number":6},{"id":172,"row":11,"number":7},{"id":173,"row":11,"number":8},{"id":174,"row":11,"number":9},{"id":175,"row":11,"number":10},{"id":176,"row":11,"number":11},{"id":177,"row":11,"number":12},{"id":178,"row":11,"number":13},{"id":179,"row":11,"number":14},{"id":180,"row":11,"number":15},{"id":181,"row":11,"number":16},{"id":182,"row":11,"number":17}]]},{"id":2,"auditorium_id":1,"name":"Parter XII - XXIII","rows":[[{"id":183,"row":12,"number":1},{"id":184,"row":12,"number":2},{"id":185,"row":12,"number":3},{"id":186,"row":12,"number":4},{"id":187,"row":12,"number":5},{"id":188,"row":12,"number":6},{"id":189,"row":12,"number":7},{"id":190,"row":12,"number":8},{"id":191,"row":12,"number":9},{"id":192,"row":12,"number":10},{"id":193,"row":12,"number":11},{"id":194,"row":12,"number":12},{"id":195,"row":12,"number":13},{"id":196,"row":12,"number":14},{"id":197,"row":12,"number":15},{"id":198,"row":12,"number":16},{"id":199,"row":12,"number":17}],[{"id":200,"row":13,"number":1},{"id":201,"row":13,"number":2},{"id":202,"row":13,"number":3},{"id":203,"row":13,"number":4},{"id":204,"row":13,"number":5},{"id":205,"row":13,"number":6},{"id":206,"row":13,"number":7},{"id":207,"row":13,"number":8},{"id":208,"row":13,"number":9},{"id":209,"row":13,"number":10},{"id":210,"row":13,"number":11},{"id":211,"row":13,"number":12},{"id":212,"row":13,"number":13},{"id":213,"row":13,"number":14},{"id":214,"row":13,"number":15},{"id":215,"row":13,"number":16}],[{"id":216,"row":14,"number":1},{"id":217,"row":14,"number":2},{"id":218,"row":14,"number":3},{"id":219,"row":14,"number":4},{"id":220,"row":14,"number":5},{"id":221,"row":14,"number":6},{"id":222,"row":14,"number":7},{"id":223,"row":14,"number":8},{"id":224,"row":14,"number":9},{"id":225,"row":14,"number":10},{"id":226,"row":14,"number":11},{"id":227,"row":14,"number":12},{"id":228,"row":14,"number":13},{"id":229,"row":14,"number":14},{"id":230,"row":14,"number":15},{"id":231,"row":14,"number":16},{"id":232,"row":14,"number":17}],[{"id":233,"row":15,"number":1},{"id":234,"row":15,"number":2},{"id":235,"row":15,"number":3},{"id":236,"row":15,"number":4},{"id":237,"row":15,"number":5},{"id":238,"row":15,"number":6},{"id":239,"row":15,"number":7},{"id":240,"row":15,"number":8},{"id":241,"row":15,"number":9},{"id":242,"row":15,"number":10},{"id":243,"row":15,"number":11},{"id":244,"row":15,"number":12},{"id":245,"row":15,"number":13},{"id":246,"row":15,"number":14},{"id":247,"row":15,"number":15},{"id":248,"row":15,"number":16}],[{"id":249,"row":16,"number":1},{"id":250,"row":16,"number":2},{"id":251,"row":16,"number":3},{"id":252,"row":16,"number":4},{"id":253,"row":16,"number":5},{"id":254,"row":16,"number":6},{"id":255,"row":16,"number":7},{"id":256,"row":16,"number":8},{"id":257,"row":16,"number":9},{"id":258,"row":16,"number":10},{"id":259,"row":16,"number":11},{"id":260,"row":16,"number":12},{"id":261,"row":16,"number":13},{"id":262,"row":16,"number":14},{"id":263,"row":16,"number":15},{"id":264,"row":16,"number":16},{"id":265,"row":16,"number":17}],[{"id":266,"row":17,"number":1},{"id":267,"row":17,"number":2},{"id":268,"row":17,"number":3},{"id":269,"row":17,"number":4},{"id":270,"row":17,"number":5},{"id":271,"row":17,"number":6},{"id":272,"row":17,"number":7},{"id":273,"row":17,"number":8},{"id":274,"row":17,"number":9},{"id":275,"row":17,"number":10},{"id":276,"row":17,"number":11},{"id":277,"row":17,"number":12},{"id":278,"row":17,"number":13},{"id":279,"row":17,"number":14},{"id":280,"row":17,"number":15},{"id":281,"row":17,"number":16}],[{"id":282,"row":18,"number":1},{"id":283,"row":18,"number":2},{"id":284,"row":18,"number":3},{"id":285,"row":18,"number":4},{"id":286,"row":18,"number":5},{"id":287,"row":18,"number":6},{"id":288,"row":18,"number":7},{"id":289,"row":18,"number":8},{"id":290,"row":18,"number":9},{"id":291,"row":18,"number":10},{"id":292,"row":18,"number":11},{"id":293,"row":18,"number":12},{"id":294,"row":18,"number":13},{"id":295,"row":18,"number":14},{"id":296,"row":18,"number":15},{"id":297,"row":18,"number":16},{"id":298,"row":18,"number":17}],[{"id":299,"row":19,"number":1},{"id":300,"row":19,"number":2},{"id":301,"row":19,"number":3},{"id":302,"row":19,"number":4},{"id":303,"row":19,"number":5},{"id":304,"row":19,"number":6},{"id":305,"row":19,"number":7},{"id":306,"row":19,"number":8},{"id":307,"row":19,"number":9},{"id":308,"row":19,"number":10},{"id":309,"row":19,"number":11},{"id":310,"row":19,"number":12},{"id":311,"row":19,"number":13},{"id":312,"row":19,"number":14},{"id":313,"row":19,"number":15},{"id":314,"row":19,"number":16}],[{"id":315,"row":20,"number":1},{"id":316,"row":20,"number":2},{"id":317,"row":20,"number":3},{"id":318,"row":20,"number":4},{"id":319,"row":20,"number":5},{"id":320,"row":20,"number":6},{"id":321,"row":20,"number":7},{"id":322,"row":20,"number":8},{"id":323,"row":20,"number":9},{"id":324,"row":20,"number":10},{"id":325,"row":20,"number":11},{"id":326,"row":20,"number":12},{"id":327,"row":20,"number":13},{"id":328,"row":20,"number":14},{"id":329,"row":20,"number":15},{"id":330,"row":20,"number":16},{"id":331,"row":20,"number":17}],[{"id":332,"row":21,"number":1},{"id":333,"row":21,"number":2},{"id":334,"row":21,"number":3},{"id":335,"row":21,"number":4},{"id":336,"row":21,"number":5},{"id":337,"row":21,"number":6},{"id":338,"row":21,"number":7},{"id":339,"row":21,"number":8},{"id":340,"row":21,"number":9},{"id":341,"row":21,"number":10},{"id":342,"row":21,"number":11},{"id":343,"row":21,"number":12},{"id":344,"row":21,"number":13},{"id":345,"row":21,"number":14},{"id":346,"row":21,"number":15},{"id":347,"row":21,"number":16}],[{"id":348,"row":22,"number":1},{"id":349,"row":22,"number":2},{"id":350,"row":22,"number":3},{"id":351,"row":22,"number":4},{"id":352,"row":22,"number":5},{"id":353,"row":22,"number":6},{"id":354,"row":22,"number":7},{"id":355,"row":22,"number":8},{"id":356,"row":22,"number":9},{"id":357,"row":22,"number":10},{"id":358,"row":22,"number":11},{"id":359,"row":22,"number":12},{"id":360,"row":22,"number":13},{"id":361,"row":22,"number":14},{"id":362,"row":22,"number":15},{"id":363,"row":22,"number":16},{"id":364,"row":22,"number":17}],[{"id":365,"row":23,"number":1},{"id":366,"row":23,"number":2},{"id":367,"row":23,"number":3},{"id":368,"row":23,"number":4},{"id":369,"row":23,"number":5},{"id":370,"row":23,"number":6},{"id":371,"row":23,"number":7},{"id":372,"row":23,"number":8},{"id":373,"row":23,"number":9},{"id":374,"row":23,"number":10},{"id":375,"row":23,"number":11},{"id":376,"row":23,"number":12},{"id":377,"row":23,"number":13},{"id":378,"row":23,"number":14},{"id":379,"row":23,"number":15},{"id":380,"row":23,"number":16}]]},{"id":3,"auditorium_id":1,"name":"Balkon","rows":[[{"id":381,"row":1,"number":1},{"id":382,"row":1,"number":2},{"id":383,"row":1,"number":3},{"id":384,"row":1,"number":4},{"id":385,"row":1,"number":5},{"id":386,"row":1,"number":6},{"id":387,"row":1,"number":7},{"id":388,"row":1,"number":8},{"id":389,"row":1,"number":9},{"id":390,"row":1,"number":10},{"id":391,"row":1,"number":11}],[{"id":392,"row":2,"number":1},{"id":393,"row":2,"number":2},{"id":394,"row":2,"number":3},{"id":395,"row":2,"number":4},{"id":396,"row":2,"number":5},{"id":397,"row":2,"number":6},{"id":398,"row":2,"number":7},{"id":399,"row":2,"number":8},{"id":400,"row":2,"number":9},{"id":401,"row":2,"number":10}],[{"id":402,"row":3,"number":1},{"id":403,"row":3,"number":2},{"id":404,"row":3,"number":3},{"id":405,"row":3,"number":4},{"id":406,"row":3,"number":5},{"id":407,"row":3,"number":6},{"id":408,"row":3,"number":7},{"id":409,"row":3,"number":8},{"id":410,"row":3,"number":9},{"id":411,"row":3,"number":10},{"id":412,"row":3,"number":11}],[{"id":413,"row":4,"number":1},{"id":414,"row":4,"number":2},{"id":415,"row":4,"number":3},{"id":416,"row":4,"number":4},{"id":417,"row":4,"number":5},{"id":418,"row":4,"number":6},{"id":419,"row":4,"number":7},{"id":420,"row":4,"number":8},{"id":421,"row":4,"number":9},{"id":422,"row":4,"number":10}],[{"id":423,"row":5,"number":1},{"id":424,"row":5,"number":2},{"id":425,"row":5,"number":3},{"id":426,"row":5,"number":4},{"id":427,"row":5,"number":5},{"id":428,"row":5,"number":6},{"id":429,"row":5,"number":7},{"id":430,"row":5,"number":8},{"id":431,"row":5,"number":9},{"id":432,"row":5,"number":10}],[{"id":433,"row":6,"number":1},{"id":434,"row":6,"number":2},{"id":435,"row":6,"number":3},{"id":436,"row":6,"number":4},{"id":437,"row":6,"number":5},{"id":438,"row":6,"number":6}],[{"id":439,"row":7,"number":1},{"id":440,"row":7,"number":2},{"id":441,"row":7,"number":3},{"id":442,"row":7,"number":4},{"id":443,"row":7,"number":5},{"id":444,"row":7,"number":6}]]}],"seats_map":"main"}}}
Run Code Online (Sandbox Code Playgroud)
在服务器端我只这样做(Laravel 6):
$seatsMap = $service->getSeatsMap();
return response()->json($seatsMap);
Run Code Online (Sandbox Code Playgroud)
然而有时在处理应用程序时,我会遇到 json 格式异常。
FormatException: Unexpected end of input (at character 14076)...,"row":7,"number":5},{"id":444,"row":7,"number":6}]]}],"seats_m
Run Code Online (Sandbox Code Playgroud)
调试显示有时最后一个括号}
丢失response.body
。主体的长度有时是14076字节,有时是14075字节。就像 flutter 的 http 库忘记读取最后一个字节一样。
我也尝试在服务器端返回这个:
return response()->json($data, 200, [
"Content-Type" => "application/json; charset=utf-8"
]);
Run Code Online (Sandbox Code Playgroud)
但有时仍然会发生最后一个}
丢失的情况response.body
。
导致此错误的原因可能是什么?我怀疑它是服务器端,因为我使用 Laravel 来 json 编码关联数组。
编辑
看起来这只发生在模拟器上,在我的华为 Mate 10 PRO 上,我无法重现这个错误......
编辑2
一旦我将后端代码推送到服务器,现在我正在从服务器检索数据,这种情况就会在模拟器上停止发生
我在中创建了一个新的laravel项目/var/www/polyforms.me
并创建了虚拟主机文件polyforms.conf
:
<VirtualHost *:80>
ServerName polyforms.dev
ServerAdmin webmaster@localhost
DocumentRoot /var/www/polyforms.me/public
ErrorLog ${APACHE_LOG_DIR}/polyforms.me-error.log
CustomLog ${APACHE_LOG_DIR}/polyforms.me-access.log combined
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Run Code Online (Sandbox Code Playgroud)
当我去polyforms.dev
它打开主页应该,但当我去说polyforms.dev/about
让它告诉我这个:
如果我使用php artisan serve
和使用http://localhost:8000/about
一切正常......问题是什么以及如何解决?
我需要为WordPress提供一个插件,该插件将具有少量自定义API端点,并且我已经安装了这两个插件
我创建了自定义端点:
add_action('rest_api_init', function ($data) {
register_rest_route('mladi-info/v1', '/user/favorites', [
'methods' => 'GET',
'callback' => 'mi_get_favorite_posts'
]);
});
Run Code Online (Sandbox Code Playgroud)
我需要保护此端点,以便仅处理已发送JWT令牌(使用/ wp-json / jwt-auth / v1 / token端点发送用户名和密码生成)的那些请求,否则应返回401状态代码。我怎么做?
假设我有CountrySelect
和CitySelect
,其中CountrySelect
列出了所有国家/地区,并且CitySelect
仅列出了当前所选国家/地区的城市...
通过新选择的国家的正确方法是什么?正如我在 vuejs 文档中读到的:
\n\n\n\n\n在Vue中,父子组件关系可以概括为props down,events up。父级通过 props 将数据传递给子级,子级通过事件向父级发送消息。接下来让\xe2\x80\x99s看看它们是如何工作的。
\n
CountrySelect
因此,在这种情况下,我将检测触发事件内部选择框的变化changed
以及国家/地区对象。然后 的父组件CountrySelect
将侦听此事件,然后当事件发生时将更新其属性country
。属性country
在父组件中被“观察到”,并且更改其值将导致 DOM 更新,因此<city-select>
调用的标记上的 HTML 属性country
将会更改。但是接下来我将如何检测CitySelect
组件的属性更改,因为我需要通过 AJAX 重新加载城市。我考虑将country
属性放入watch
对象中CitySelect
,但这对我来说似乎不是一个优雅的解决方案,感觉这样做不太正确......
<template>\n <parent>\n <country-select name="country_id" v-model="country"></country-select>\n <city-select name="city_id" :country="country" v-model="city"></city-select>\n </parent>\n<template>\n\n<script>\n export default {\n data: function() {\n return {\n country: null,\n city: null,\n };\n }\n }\n</script>\n
Run Code Online (Sandbox Code Playgroud)\n\n我认为的另一种方法是,如果在父级中做这样的事情:
\n\n …当我更改变量时,Ionic 2 没有更新我的 UI 有问题。
html:
<ion-card *ngFor="let event of mEvents (click)="onEventCardClick(event)">
<ion-card-content ion-item>
<span class="eventTitle">{{ event.title }}</span> <br/>
<span class="relativeDate">{{ event.getRelativeTimeString() }}</span>
<ion-badge item-end>{{ event.reservationsCount }}</ion-badge>
<ion-badge *ngIf="event.hasUnreadMessages" color="danger" item-end>{{ event.unreadMessagesCount }}</ion-badge>
</ion-card-content>
</ion-card>
Run Code Online (Sandbox Code Playgroud)
从 ts 文件结束:
this.fcm.onNotification().subscribe((notification:NotificationData) => {
if(!this.navCtrl.isActive(this.viewCtrl))
return;
notification.event = JSON.parse(notification.event);
notification.reservation = JSON.parse(notification.reservation);
notification.reservation_message = JSON.parse(notification.reservation_message);
let eventId: number = notification.event.id;
for(let i=0; i<this.mEvents.length; i++) {
if(this.mEvents[i].id == eventId) {
this.mEvents[i].unreadMessagesCount++;
this.mEvents[i].hasUnreadMessages = true;
return;
}
}
});
Run Code Online (Sandbox Code Playgroud)
问题是,我从我的服务器发送了一个推送通知。我成功接收消息并更新相应的对象(事件)。但是最后一个ion-badge
元素 inion-card
没有出现。它仍然是“隐藏的”。但是,如果我与 …
php ×4
android ×3
javascript ×2
laravel-5 ×2
rest ×2
wordpress ×2
android-architecture-components ×1
android-architecture-navigation ×1
android-collapsingtoolbarlayout ×1
android-room ×1
angular ×1
datetime ×1
encoding ×1
flutter ×1
http ×1
ionic2 ×1
json ×1
jwt ×1
laravel ×1
laravel-5.1 ×1
left-join ×1
logcat ×1
nativescript ×1
php-carbon ×1
search ×1
semaphore ×1
typescript ×1
vue.js ×1
vuejs2 ×1