- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经建立了一个项目,在其中扩展了包含两个不同区域的 Backbone.Marionette.Layout
。该布局可以用作整个应用程序的组件。特别是,区域设置如下。
regions : {
masterRegion : { selector: '[data-region=master]' },
slaveRegion: { selector: '[data-region=slave]' }
},
特别是,我使用 data-region
选择器来注入(inject)我感兴趣的 View 。
当在树结构中使用这样的布局时, View 会重复,因为 getEl
函数定位了错误的区域来注入(inject) View 。显然这是我的错,在 Marionette
(v1.1.0) 文档中编写了以下内容。
override the getEl function if we have a parentEl this must be overridden to ensure the selector is found on the first use of the region. if we try to assign the region's el to parentEl.find(selector) in the object literal to build the region, the element will not be guaranteed to be in the DOM already, and will cause problems
其中 getEl
定义为
getEl: function(selector){
return Marionette.$(selector);
}
所以,我的问题如下。这是什么意思?我怎样才能覆盖这个方法?执行此类覆盖的正确位置在哪里?
希望一切都清楚。
最佳答案
这是我对此的理解:
换句话说,第一次使用区域时(例如,调用 show
方法),Marionette 需要构建一个区域实例并将其与正确的 DOM 元素关联(由选择器
属性)。
但是,在 Marionette 可以在包含的父元素中查找 DOM 元素之前,它必须确保所有必需的 DOM 元素(最重要的是我们要查找的元素)已加载。
这对你来说更有意义吗?
根据 flexaddicted 的评论进行编辑。
Could you suggest me a the correct way to achieve this? Is there any manner to override the method below?
我认为您不需要重写此方法。注释指出了为什么在构建区域时以这种方式获取 DOM 元素而不是直接赋值,但它仍然应该与树结构一起正常工作(因为仍然可以正确确定父级)。
我认为问题可能出在您的区域选择器上:因为它是“通用”的,所以它可能会匹配多个元素(而不是使用仅匹配 1 个元素的 id
属性进行选择) ,并且可能匹配您不期望的 DOM 元素,例如 subview 。 (这当然取决于 Marionette 何时查看 DOM 来获取选择器。)
此外,如果可能的话,我会考虑使用复合 View 来满足您的树结构需求。请参阅http://davidsulc.com/blog/2013/02/03/tutorial-nested-views-using-backbone-marionettes-compositeview/和 http://lostechies.com/derickbailey/2012/04/05/composite-views-tree-structures-tables-and-more/
关于javascript - 重写 Backbone.Marionette 中 Marionette.Region 的 getEl 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594202/
我有这段用于平滑滚动的代码,它工作得很好,但只适用于一个“clickme”id,我怎么能将这段代码用于多个选项卡,我++ Scroll to red section! Scroll to b
对于这个作业,我们正在编写一个不可变的类,它实现了一个矩阵接口(interface),该接口(interface)具有一些矩阵函数,加、减、乘...我们克隆提供的数据以创建一个不可变的新矩阵。接口(i
我编写了一些在 Chrome 上运行良好的代码。但是,在 Firefox 上运行时,它不起作用。 Firebug 报告 getClass 函数中的parentElement 字段未定义。看起来也许 F
无法理解 getElements 的行为 var ele = document.getElementsByClassName('logo-save'); console.log('Elements',
这个问题已经有答案了: Why does jQuery or a DOM method such as getElementById not find the element? (7 个回答) 已关闭
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
我不想将值传递给函数,我希望它自己找到值。 function add(buttonNum) { var elements = document.getElementsByTagName("b
大家好。 在 EXTjs(可能是 4.x 版本)中,我有一个带有几级子菜单的菜单我想向其中一些子菜单添加数据属性,实际上我可以毫无问题地执行此操作:Ext.getCmp("notificationMe
document.getElements() 函数的支持程度如何。此外,是否有一个 javascript 引用页面在某处包含详细的浏览器支持信息。我通常使用 mozilla 文档,但我想知道是否有更好
仅在 IE 中查看页面时,我遇到 JavaScript 问题。我明白了: object doesn't support this property or method 我的 JavaScript 代码
我正在尝试将 Joomla 1.5 插件转换为 Joomla 2.5 插件。当这个插件运行时,Firebug 会说“TypeError: document.getElement is not a fu
我有一个包含值的网格 我需要禁用第二行的 ID 为分钟的文本框。以下示例不起作用。 document.getElementById("h_ID")[2].readOnly = true; 有人可以帮我
我在获取 ListModel 的所有元素时遇到问题,当我尝试将字符串写入文件时,它们输出如下所示的内容: [Ljava.lang.String;@79b43f[Ljava.lang.String;@7
我们正在处理遗留代码,并且遇到不稳定测试的问题。 我想增加默认超时,但 driver.findElement 在很多地方都使用 - 覆盖每个调用以使用 WebDriverWait 将是一项艰巨的任务。
我试图使函数的结果出现在脚本外部的元素中。我得到的不是结果,而是“未定义”消息。这可能只是一个语法问题,但我无法让它工作。 这是我所做的: 1 + 2 = here goes the
我正在创建一个数组,其中包含我的应用程序中某些组件的高度。 为此,我必须获取元素及其高度。 我是通过这个函数做到的: getElement(method, elem){ switch (met
出于某种原因,getElementById() 和 getElementsByClassName() 无法定位 gmail 上的许多元素。例如,导航栏上标题为“邮件”的 div 具有代码: Mail
本文整理了Java中org.eclipse.xsd.XSDFeature.getElement()方法的一些代码示例,展示了XSDFeature.getElement()的具体用法。这些代码示例主要来
本文整理了Java中org.eclipse.xsd.XSDConcreteComponent.getElement()方法的一些代码示例,展示了XSDConcreteComponent.getElem
本文整理了Java中bibliothek.util.xml.XElement.getElement()方法的一些代码示例,展示了XElement.getElement()的具体用法。这些代码示例主要来
我是一名优秀的程序员,十分优秀!