我有一个做CRUD的应用程序Collection中Models.DisplayView每个模型都有一个始终可见的模型.还有一个EditView仅在DisplayView单击关联时才可见.
在DisplayView和EditView出现的不同意见父里面.现在我正在使用"事件聚合器"模式告诉我的应用程序渲染EditView时DisplayView单击a.此处描述的模式:http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/
当我DisplayView点击其中一个时,它会触发一个EditViews侦听父级的事件.当它收到此事件时,它会EditView根据触发事件的模型呈现适当的事件.
这适用于我的大多数应用程序,但是当我想EditView根据DisplayView我的应用程序中相关的绝对位置获得更改位置时,这特别麻烦.它不是DisplayView直接控制位置EditView,而是触发"请将自己重新定位到这些坐标"事件.这种直接通信并不像应该向整个应用程序广播的东西.我开始怀疑,对于我的情况,我应该只是引用适当的EditView作为每个属性DisplayView而不是将它们分离.
正如我所说,问题在于它们是在不同的父视图中呈现的.在DisplayViews得到呈现的HeaderView,而在EditViews得到呈现的ContentView.
其他人如何处理这样的情况?将EditView在某些方面属于DisplayView,但是,这并不符合我的应用程序的DOM的结构方式.假设我创建的每个之间的直接联系EditView和DisplayView,我将如何处理的显示/隐藏EditView?是否DisplayView还需要对ContentView容器的引用,它将使用适当EditView的参数显式呈现?
我很好奇在版本化文件提交注释中应该是什么类型的内容.它应该通常描述更改的内容(例如"窗口小部件屏幕已更改为仅显示活动窗口小部件")或者应该更具体(例如"在fetchWidget查询的where子句中添加了一个新条件,以便仅默认检索活动窗口小部件")
一次提交的原子性如何?只是在单个提交中包含更新的查询的文件(例如"更新小部件屏幕以默认仅显示活动小部件"),或者应该和屏幕上的其他几个更改+界面更改共享相同的提交以及更一般的描述喜欢("更新小部件屏幕:A")默认情况下仅显示活动小部件B)添加按钮以切换显示非活动小部件")
我看到subversion提交注释的使用方式非常不同,并且想知道其他人的成功与否.有些评论与"更新文件"一样简短,而其他评论的篇幅很长,其他评论的格式可以查询,并与某些外部系统(如JIRA)相关联.
我曾经非常描述变化的原因以及具体的技术变化.最近我一直在缩减,只是给了一个概括"这是我在这个页面上改变了"的评论.
在大多数其他面向对象的语言中.让每个函数接收一个对象的关联数组而不是枚举方法签名中的每一个都是亵渎神灵的.但是,为什么这两种语言在大多数流行框架中都可以接受并且常用呢?
除了希望有简洁的方法签名之外还有一些理由吗?
我确实看到了一个好处 - 随着新的可选参数的添加,API可以保持不变.但是Javascript和PHP已经在其方法签名中允许可选参数.如果有的话,似乎Java或其他OO语言将从中受益更多......但我很少在那里看到这种模式.
是什么赋予了?
我有一个带有链式下拉菜单的页面.选择一个option从第一个select填充第二个,option从第二个中选择一个select返回一个匹配结果表,使用页面innerHtml上空的函数div.
问题是,一旦我做出选择并且大量数据被带到页面上,页面上的所有后续Javascript运行异常缓慢.好像我通过AJAX拉回来的所有数据div仍然占用了大量内存.我试着null在调用后设置包含AJAX结果的返回对象,innerHtml但没有运气.
当我使用Javascript将大量数据插入DOM时,Firefox,Safari,Chrome和Opera都没有显示性能下降,但在IE中它非常明显.为了测试它是一个Javascript/DOM问题而不是一个普通的旧IE问题,我创建了一个页面版本,它返回初始加载的所有结果,而不是通过AJAX/Javascript,并发现IE没有性能问题.
仅供参考,我正在使用jQuery的jQuery.get方法来执行AJAX调用.
编辑这是我正在做的事情:
<script type="text/javascript">
function onFinalSelection() {
var searchParameter = jQuery("#second-select").val();
jQuery.get("pageReturningAjax.php",
{SEARCH_PARAMETER: searchParameter},
function(data) {
jQuery("#result-div").get(0).innerHtml = data;
//jQuery("#result-div").html(data); //Tried this, same problem
data = null;
},
"html");
}
</script>
Run Code Online (Sandbox Code Playgroud)
我想要指出的是,当返回data非常大时,这只会成为一个问题.它与大小直接相关,因为我能够看到中等大小结果的适度减速,并且当返回几百条记录时只会出现大幅减速.
我有一个定义一些默认值的类,以及一个定义一些默认值的子类.但是当我创建子类的实例时,它只查看本地默认值,并且不会将其默认值与父类的默认值合并.有没有简单的方法来做这个没有明确地将本地默认值与initialize每个子类的函数中的父默认值合并?
var Inventory = Backbone.Model.extend({
defaults: {
cat: 3,
dog: 5
}
});
var ExtendedInventory = Inventory.extend({
defaults: {
rabbit: 25
}
});
var ei = new ExtendedInventory({});
console.log(ei.attributes);
Run Code Online (Sandbox Code Playgroud)
这输出:
{rabbit: 25}
Run Code Online (Sandbox Code Playgroud)
不是我想要的:
{cat: 3, dog: 5, rabbit: 25}
Run Code Online (Sandbox Code Playgroud) 这是我的光标:
CURSOR C1 IS SELECT * FROM MY_TABLE WHERE SALARY < 50000 FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)
我立即打开光标,以便在我的程序期间锁定这些记录.
我希望在我的光标中有<2条记录时引发应用程序错误.使用C1%ROWCOUNT属性失败,因为它只计算到目前为止已提取的数字.
这个用例的最佳模式是什么?我是否需要创建一个虚拟的MY_TABLE%ROWTYPE变量,然后遍历光标以获取它们并保持计数,或者是否有更简单的方法?如果这是这样做的方法,那么取出光标中的所有行都会隐式关闭它,从而解锁这些行,或者它会保持打开状态,直到我明确地关闭它,即使我已经将它们全部取出了?
我需要确保光标对于超出此计数的各种其他任务保持打开状态.
我从桌子FOO和BAR中选择.我想锁定正在返回的FOO记录,但我不想锁定BAR的记录.
cursor c_foobar is
select foo.*, bar.* from
foo, bar
where foo.id = bar.foo_id
for update of <what should I put here?>
Run Code Online (Sandbox Code Playgroud)
看起来我需要指定单独的列,但我希望锁定整个foo记录.我希望我可以这样做:
cursor c_foobar is
select foo.*, bar.* from
foo, bar
where foo.id = bar.foo_id
for update of foo
Run Code Online (Sandbox Code Playgroud)
我是否必须枚举该for update of部分中的每一列foo 才能将它们全部锁定?或者我可以随意选择foo中的任何列,即使那些不是它的主键,它会锁定整个记录吗?
我有静态属性,我想从我的Backbone.Model对象的实例访问.我知道我可以硬编码父构造函数来调用方法,但是这会阻止我使用多态静态函数.例如,我希望能够foo在ExtendedInventory必要时覆盖该函数,而无需更改任何其他代码.
var Inventory = Backbone.Model.extend({},
//STATIC
{
foo: function() {
alert('bar');
}
});
var i = new Inventory({});
i.constructor.foo(); //This works!
var ExtendedInventory = Inventory.extend({});
var ei = new ExtendedInventory({});
ei.constructor.foo(); //THIS DOES NOT WORK
//How do I generically access the `Inventory.foo()` function via the `ei` object. I would
Run Code Online (Sandbox Code Playgroud) 我有一个子类需要返回其父类的返回类型的子类.我相信这被称为协变返回类型.我想知道从父类转换为子类的最简单方法.
class A {
}
class B extends A {
function bar() {
}
}
class Car {
function foo() {
return new A();
}
}
class BrokenCar extends Car {
function foo() {
$a = parent::foo();
//What is the cleanest way to convert $a to type B ?
}
}
Run Code Online (Sandbox Code Playgroud) 我的样式表定义是否应该镜像DOM层次结构?如果我有:
<div id="container">
<div class="item">
<div class="property">
<span id="1243"></span>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
当我想为每个房产设置样式时,我应该说:
.property { color: red; }
Run Code Online (Sandbox Code Playgroud)
或者我应该这样做
#container .item .property { color: red;}
Run Code Online (Sandbox Code Playgroud)
我用过这两个.我喜欢第一个简洁,因为如果层次结构改变我不需要更新它,但第二个帮助我阅读CSS.
javascript ×5
backbone.js ×3
oracle ×2
php ×2
plsql ×2
covariant ×1
css ×1
jquery ×1
locking ×1
oop ×1
parameters ×1
sql ×1
stylesheet ×1
svn ×1