我正在向json渲染一系列记录和他们急切加载的关联.
运用
ObjectSpace.each_object(ActiveRecord::Base) {|x| 1+1}
Run Code Online (Sandbox Code Playgroud)
我得到165个实例,因此我的jbuilder视图需要1秒才能将165条记录渲染到69K的json中.
我已经在使用OJ作为JSON后端了.
我对rails和json渲染性能没有任何经验.
我想知道这种速度是否是预期的性能,我几乎不相信,或者问题出在我的jbuilder视图中,因此解决方案就在我的道路上.
编辑:
使用yajl比使用oj需要几毫秒.第一次,渲染需要1秒,而下一次请求需要大约0.5秒(我猜jbuilder默认情况下自己做一些缓存).
然而0.5s对我来说太过分了,因为索引请求将涉及超过165条记录.
我知道如何使用 ComponentFactoryResolver.resolveComponentFactory(AComponentType)
但该方法需要a Type,而在我的代码中,该类型的名称为a string。
在Angular API中,有没有一种方法可以解决string?如果没有,如何Type在TypeScript中将字符串转换为?
万一以上都不可行,我将求助于地图,但它并不是那么简单,因为我需要实例化的组件将来自远程获取的UMD角度组件库。
感谢 这篇非常有见地的文章,我能够使用从端点获取的动态模板动态创建组件,但是这些组件是使用 RuntimeCompiler 在运行时编译的,在使用 AoT 编译(又称生产时)时会禁用该编译器。
有人知道适用于 AoT 的类似解决方案吗?
我的要求是:
鉴于此课程的层次性
export class A {
static m() { return 'a'};
}
export class B extends A {
static m() { return 'b'};
}
export class C extends A {
static m() { return 'c'};
}
Run Code Online (Sandbox Code Playgroud)
我需要一个方法,取一个类(不是实例)扩展A并调用m()数组的每个元素:
function looper(classes: A[]) {
classes.forEach(c => c.m());
}
Run Code Online (Sandbox Code Playgroud)
这需要A或其子类的实例数组.
我怎样才能有一个方法作为扩展A的参数类?
@Oscar Paz指出泛型
编辑1
此外,looper的输入需要存储在对象的属性中:
export class Container {
public klazzes: A[];
}
Run Code Online (Sandbox Code Playgroud)
一世
我需要将日期时间解析为两种不同格式的字符串:
以下dateTimematmat模式正确解析第一种日期字符串
DateTimeFormatter.ofPattern ("uuuuMMddHHmmss[,S][.S]X")
Run Code Online (Sandbox Code Playgroud)
但是第二个失败,因为没有预期破折号,冒号和T.
我的尝试是使用如下可选部分:
DateTimeFormatter.ofPattern ("uuuu[-]MM[-]dd['T']HH[:]mm[:]ss[,S][.S]X")
Run Code Online (Sandbox Code Playgroud)
出乎意料的是,这解析了第二种日期字符串(带有破折号的日期字符串),但不是第一种,抛出一个
java.time.format.DateTimeParseException: Text '19861221235959Z' could not be parsed at index 0
Run Code Online (Sandbox Code Playgroud)
就像可选部分没有被评估为可选部分一样......
我有一系列表单(每个表单由1个组件管理).
这些表单中有一种输入模式(例如,其中许多都需要允许输入地址),我必须重构为可重用的组件,因为它们以多种形式使用,我不想复制它们的逻辑也不是他们的模板
每个可重用的组件都必须这样做
<form>标签address: {street: "...", "city": "...", ...})从本教程为Angular2,我在了解如何实现目标1,2和4.
本教程中的解决方案还允许实现其他目标,但它通过从父级执行所有操作来实现(请参阅参考资料app.component.ts#initAddress).
我怎样才能实现3,5,6和7,而孩子中声明控件和它们的约束?
nested-forms angular-validation angular angular-forms angular5
我正在编写一个有角度的文件上传组件。
成功上传后,它会显示一个通知和两个按钮:
replace :删除上传的文件并打开文件选择器对话框remove :删除上传的文件并显示通知删除上载的文件意味着向后端系统发出HTTP DELETE请求并处理可能的失败和重试。
_handleReplace() {
this.replaceClicked$.pipe(
tap((x) => this._backend.delete(this.file, this.fieldName)),
tap((x) => openFileSelectorDialog())
);
}
_handleRemove() {
this.replaceClicked$.pipe(
tap((x) => this._backend.delete(this.file, this.fieldName)),
tap((x) => displayNotice())
);
}
Run Code Online (Sandbox Code Playgroud)
在此代码段中,我不会处理可能的失败和重试。
如何提取删除逻辑以避免在两种方法中重复进行?
或更笼统地说,如何将常见的变换应用于两个不同的可观察对象?
谢谢!
我正在编写一个继承自 RailsAdmin::MainController 的自定义 rails_admin 控制器(Backend::ImagesController)。
我按照此答案中的步骤操作,但是当我的视图使用路由助手 backend_image_path(@image) 时,出现 undefined_method 错误。
控制器在controllers/backend/images_controller.rb 下定义为:
module Backend
class ImagesController < RailsAdmin::MainController
#layout 'rails_admin/cropper'
skip_before_filter :get_model
skip_before_filter :get_object
skip_before_filter :check_for_cancel
.... the various actions ....
Run Code Online (Sandbox Code Playgroud)
我的路线定义为:
namespace 'backend' do
resources :images do
member do
get :cropper
post :crop
end
end
end
mount RailsAdmin::Engine => '/backend', :as => 'rails_admin'
Run Code Online (Sandbox Code Playgroud)
rake 路由的输出是我所期望的:
backend_image GET /backend/images/:id(.:format) backend/images#show {:protocol=>"https://"}
Run Code Online (Sandbox Code Playgroud)
最后,从 rails 控制台:
app.backend_image_path(id: 10)
=> "/backend/images/10"
Run Code Online (Sandbox Code Playgroud)
这个控制器运行完美,直到我试图通过扩展 RailsAdmin::MainController 将它集成到 RA 中
我不知道为什么不能再从控制器访问 route_helper....
angular ×5
angular5 ×4
typescript ×2
class ×1
components ×1
date-parsing ×1
forms ×1
java ×1
java-8 ×1
java-time ×1
json ×1
nested-forms ×1
performance ×1
rails-admin ×1
rxjs ×1
umd ×1