【发布时间】:2012-01-25 19:17:18
【问题描述】:
我使用 Classy 库在 javascript 中进行 OOP 编程。
我编写了一个类来处理 DIV 元素上的画布操作。由于代码的某些部分存在一些困难,我不得不在类中使用对象变量名,即使它违反了 OOP 方法。
例如:
drawer=new CanvasManager("div1",300,300);
var CanvasManager= Class.$extend({
blabla:function()
{
drawer.id=1;
}
});
现在我需要在不同 DIV 的一个文档中多次使用这个类,而这种冲突使它不可能。我唯一的解决方案是使用 iframe 元素将它们分开。
在我想从 codeigniter 视图而不是 controller 获取 iframe 内容之前没问题。
想用这样的东西
<iframe class="iframeclass1">
<?php
echo $this->load->view('gallery/w2',array('item'=>$amount),true);
?>
</iframe>
而不是
<iframe class="iframeclass1" src="<?php echo base_url(); ?>index.php/gallery/w2c/<?php echo $item->amount; ?>">
</iframe>
那么我们还有什么其他的办法来解决这个对象名冲突呢?
编辑:
如果您首先问为什么要这样编码,一些 jquery 函数不允许您传递参数(例如 each() )。实际上只有 bind() 函数允许参数传递,这很有帮助。如果您知道任何解决方案,我会很高兴。
edit2
困难是这样的 可以说blabla函数就像
blabla:function()
{
$('.somediv').each(function()
{
$(this).html(drawer.id);
}
)
}
在每个函数中,“this”关键字成为 jquery 选择器的指针。
【问题讨论】:
-
您能否对为什么变量名是
CanvasManager给出更全面/更清晰的解释? -
冲突的不是类名,而是对象名
标签: javascript jquery html oop codeigniter