主干js中的集合不允许您使用set属性,但我经常发现需要存储有关集合的一些元信息.设置该信息的最佳位置在哪里?
在尝试测试视图是否与事件正确绑定时,我遇到了一些有趣的磨难.在骨干中,我们通常使用以下内容中的某些内容绑定到initialize方法中的事件something.bind("change", this.render);.在我的测试中,我想确保设置此绑定,因此我执行了以下操作:
this.myView = new MyView();
spyOn(this.myView, "render");;
this.legendView.groupData.trigger("change");
expect(this.legendView.render).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)
但是,这不会奏效.因为绑定发生在MyView的初始化函数中,所以事件get被绑定到myView的渲染函数AT THAT TIME.因此,当您添加间谍时,它会包装渲染功能并将其设置回myView.render.但是由第一个绑定创建的闭包仍然存在,我们完全是胡说八道.那么我们能做些什么呢?我做了什么,是将我的绑定调用移动到一个单独的函数,如:
myView = Backbone.View.extend({
initialize: function(){
_.bindAll(this, "render");
this.initialize_model_bindings();
},
initialize_model_bindings: function(){
something.bind("change", this.render);
},
render: function(){ //... }
});
Run Code Online (Sandbox Code Playgroud)
然后我的测试看起来像:
this.myView = new MyView();
spyOn(this.myView, "render");
this.myView.initialize_model_bindings();
this.legendView.groupData.trigger("change");
expect(this.legendView.render).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)
这有效,但我正在寻找更好的解决方案.谢谢
我有一个使用backbone.js的情况,其中我有一组模型,以及一些关于模型的其他信息.例如,假设我正在返回金额列表:它们具有与每个模型相关联的数量.现在假设每个金额的单位总是相同的:比如夸脱.然后我从我的服务回来的json对象可能是这样的:
{
dataPoints: [
{quantity: 5 },
{quantity: 10 },
...
],
unit : quarts
}
Run Code Online (Sandbox Code Playgroud)
现在骨干集合没有真正的机制来将这个元数据与集合本地关联,但是在这个问题中我建议:在集合上设置属性 -我可以使用.meta(property, [value])样式函数扩展集合的主干js - 这是一个好的解决方案 但是,我们自然希望能够从json响应中干净地检索这些数据,就像我们上面的那样.
Backbone.js为我们提供了parse(response)函数,它允许我们指定从url属性中提取集合的模型列表的位置.但是,我没有办法在不重载的情况下创建更智能的功能,fetch()这将删除已经可用的部分功能.
我的问题是:有没有比重载更好的选择fetch()(并尝试调用它的超类实现)来实现我想要实现的目标?
谢谢
想象一下,我有一个视图,作为视图的一部分,它渲染'x'模型对象,仅渲染'x'.问题是,我认为这个视图相关的常量是否合适?
我的猜测是做这样的事情:
myApp.MyView = Backbone.View.extend({
...
myConstant: 10,
...
render: function(){
...
//some code that uses myConstant
...
}
});
Run Code Online (Sandbox Code Playgroud)
这有意义吗?
有任何建议帮助!
我正在使用Flask构建我的Web应用程序,并且我想注册一个全局资源,该资源表示与远程服务的连接,该服务的持续时间超过请求(在这种情况下,连接是一个可以有效的SOAP连接最多30天).
另一个例子可能是像MongoDB这样的数据库,它处理驱动程序中的连接池,如果你在每个请求上创建了一个新的连接,它将表现不佳.
应用程序上下文和请求上下文似乎都不适合此任务.
问题"将另一个对象传递给主要烧瓶应用程序 "表明我们将这些资源存储在app.config字典中.
我有一个简单的Spring&Jersey应用程序,它非常适合通过简单的资源消费请求.但是,我想返回一个JSON响应 - 包含一个对象的简单JSON序列化.为此,我添加了一个maven依赖项jersey-json.但是,只要我添加此依赖项,我就会在服务器启动时收到此错误:
com.sun.jersey.api.container.ContainerException: No WebApplication provider is present at
com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69) at
com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:391)
Run Code Online (Sandbox Code Playgroud)
我并不完全清楚提供商到底是什么,但我很确定应该找到一个默认提供商.
为了完整性,这是我的资源:
@Path("/scan")
@Resource
@Component
public class ScanResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{barcode}")
public List<Scan> getScansForBarcode(@PathParam("barcode") Long barcode){
..snip..
return results;
}
}
Run Code Online (Sandbox Code Playgroud)
Scan对象是一个简单的Entity Bean对象.
mvn依赖是:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.11</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么我会得到No WebApplication provider is present例外?有关如何解决它的任何想法?
谢谢
使用标准api,我有一个查询,它执行以下操作:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<SourcePath> pathQuery = cb.createQuery(SourcePath.class);
Root<SourcePath> pathRoot = pathQuery.from(SourcePath.class);
pathQuery.where(cb.equal(cb.literal(0x00010002).as(String.class), (pathRoot.get(SourcePath_.path))));
TypedQuery<SourcePath> query = entityManager.createQuery(pathQuery);
query.getResultList();
Run Code Online (Sandbox Code Playgroud)
生成的sql查询结果如下:
select ...snip aliases... from SourcePath where cast(x'00010002', char(1)) = path;
Run Code Online (Sandbox Code Playgroud)
(路径将是一些讨厌的旧别名,但这是无关紧要的).
此查询不正确.特别是,中投:cast(x'00010002', char(1))不强制转换为字符串,由指定的.as(String.class),相反,它应该是cast(x'00010002', char),或者cast(x'00010002', char(N)在那里N是一个合适的足够大的数量.
我已将此抛出失败的原因与org.hibernate提供的MySqlDialect隔离开来.尤其:
public String getCastTypeName(int code) {
if ( code==Types.INTEGER ) {
return "signed";
}
else if ( code==Types.VARCHAR ) {
return "char";
}
...snip...
}
Run Code Online (Sandbox Code Playgroud)
链的哪一个被解释为a char,由对话框注册:registerColumnType( Types.CHAR, "char(1)" );.
最后,对我的问题.我该如何解决这个问题?我是否将其报告为Hibernate的错误?我是否扩展了Dialog并从getCastTypeName更正了返回的类型?是否有 …
我有一个非常难看的遗留数据库系统,我需要与之集成.基本上我在系统上做一些只读报告,我不想设置代表我正在处理的每个表的一千个实体.相反,我想为我生成的每个报告类型定义一个实体(实质上是来自不同表的一堆列的联合),然后让hibernate映射来讨厌(许多已加入,很多联合) sql查询到这样的实体列表.
问题是:我可以创建一个没有基础表的实体,并使用sql语句填充所述实体的列表吗?
谢谢!
Java 8引入了java.time.Clock接口,它应该允许我有效地模拟系统时间调用(太棒了!).
我想天真地替换调用System.currentTimeMillis()与调用someClock.millis(),但目前尚不清楚,我认为这两个时钟实际上将根据给定的caviet所有情况下返回相同的价值观Clock.system*,他们使用"的状态文档...最好的系统时钟". System.currentTimeMillis()没有说明使用最佳可用时钟的任何类似声明.
我有一个使用视图继承的案例,我的代码看起来基本上像:
parentView = Backbone.View.extend({
events: {
"some event": "business"
},
initialize: function(){
_.bindAll(this);
},
business: function(e){
...
this.someFunc && this.someFunc();
...
}
});
childView = parentView.extend({
events: {
...
},
constructor: function(){
this.events = _.extend( {}, parentView.prototype.events, this.events );
parentView.prototype.initialize.apply( this );
},
initialize: function(){
_.bindAll(this);
},
someFunc: function(){
...
}
});
Run Code Online (Sandbox Code Playgroud)
更新:将this.events扩展移动到构造函数.
我的子视图包含someFunc在其中,并且在父视图中的某些业务功能期间,它应该调用该函数(如果存在).如果this正确设置为childView,那么this.someFunc应该存在.然而,这不是我遇到的行为.
在initialize函数期间(在父级中),this确实设置为子视图.但是,当some event触发时,business使用thisset to 调用该函数parentView.
backbone.js ×5
javascript ×4
view ×3
collections ×2
hibernate ×2
java ×2
jpa-2.0 ×2
json ×2
casting ×1
constants ×1
conventions ×1
criteria-api ×1
datetime ×1
flask ×1
inheritance ×1
jasmine ×1
java-time ×1
jersey ×1
mysql ×1
python ×1
spring ×1