我想从按钮传递默认域以应用于目标操作 像这样:
var currentPosition : CGFloat!
override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
currentPosition = tableView.contentOffset.y
}
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
let amoutOfScroll = abs(tableView.contentOffset.y - currentPosition) // abs return absulote value, just to avoid getting nagative values
let scrollLenght = 25 // the length of scroling I need
if amoutOfScroll > scrollLenght {
// code
}
}
我现在正在做的方法是触发一个打开新动作窗口的功能:
<!-- action -->
<act_window id="action_target"
name="Project Categories"
res_model="addon.model"
view_mode="kanban,tree,form"/>
<!-- button -->
<button class="btn btn-primary"
type="action"
name="%(action_target)d"
domain="[('field_x', '=', self.id)]">
Do Something
</button>
我执行此操作时出现的不需要的行为是,不会像操作按钮那样保留前一个窗口的路径:
我希望它像:
如何实现?
答案 0 :(得分:1)
我不太确定你想要做什么,但我们走了:
如果您想打开另一个显示所有记录的视图,其中field_x = self.id
在操作的上下文中使用node_modules
。这应该使用搜索集打开您的视图,查找'search_default_field_x': self.id
等于field_x
的每条记录。您可能需要定义一个能够在self.id
上搜索的搜索视图才能使其正常工作(field_x
如果不在视图中,则不会填充字段。)
我认为这回答了你的标题和问题的第一部分中的问题。
如果您不想破坏面包屑:
窗口操作(ir.actions.act_window)
target(可选)是否应在主要内容中打开视图 区域(当前),全屏模式(全屏)或对话框/弹出窗口 (新)。使用 main而不是current来清除面包屑。默认 当前。
所以,尝试使用default
而不是current
,它应该做你想做的事情。至少,它适用于我为公司编写的一些代码,但这适用于odoo 8.因为这是默认设置,所以这就是它在你的第一个片段中工作的原因。
答案 1 :(得分:1)
你应该尝试一下。
<record id="action_target" model="ir.actions.act_window">
<field name="name">Project Categories</field>
<field name="res_model">addon.model</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{
'search_default_field_x': [active_id],
'default_field_x': active_id,
}
</field>
</record>
您可以使用上下文操作设置默认搜索值。更多 细节参考项目模块和项目模块参考“任务” 按钮。你想在这里做同样的事情。