mvvm - 如何在不可编辑脚本不应用绑定的视图元素中复制数据绑定函数?
问题描述
我是一个初学者,我在一个只有 VIEW(称为模板)可编辑的平台上工作 - ViewModel 不可编辑,甚至不可读取(除了阅读开发工具中的最小化代码)。
我正在尝试将按钮从一个模板移动到另一个模板。但是,该按钮使用数据绑定函数,并且每个模板都应用了来自不同 ViewModel(javascript 文件)的绑定(使用元素 ID)。
见图形
到目前为止的想法
⚡ 更改目标模板的主 div 的 id 是个坏主意。
⬜ 在 div 中用与源模板相同的 id 包装新按钮?
- SO似乎一致认为重复的ID是不好的。
- 2 个 ViewModel 会相互干扰吗?
如果是这样,是否可以仅针对该新元素“暂停”或清除主要元素?
⬜ 我应该尝试
<script>
在目标模板的标签中重新创建 ViewModel 的那部分吗?- 这让人望而生畏,因为我不懂 js,而且
我在 devtools 中看到的最小化文件很长,看起来并不简单。
- 这让人望而生畏,因为我不懂 js,而且
还有什么?
谢谢你。
编辑:仅添加 HTML 按钮<button data-bind="click: toggleResponsiveDesign">Old UI</button>
,显示一个按钮,但单击它什么也不做。开发工具控制台在页面加载时给出错误(以及jQuery.Deferred exception
引用错误的警告):
未捕获的 ReferenceError:无法处理绑定“单击:函数(){return toggleResponsiveDesign}”消息:toggleResponsiveDesign 未
在单击时定义(在 parseBindingsString 处评估(CoreApp.js?v=v2011.0.1.1:394),:3:58 )
在 CoreApp.js?v=v=v2011.0.1.1:394
在 init (CoreApp.js?v=v=v2011.0.1.1:394)
在 init (CoreApp.js?v=v2011.0.1.1:394)
在CoreApp.js?v=v=v2011.0.1.1:394
在 Object.G (CoreApp.js?v=v=v2011.0.1.1:394)
在 CoreApp.js?v=v2011.0.1.1:394
在 Object.D (CoreApp.js?v=v=v2011.0.1.1:394)
在 h (CoreApp.js?v=v=v2011.0.1.1:394)
在 l (CoreApp.js?v=v2011.0.1.1:394)
解决方案
根据您的屏幕截图,您可能可以让 clickhandler 工作,因为 Userpersonalisationapp.js 的视图模型绑定到变量r
,您可以将 headerapp 模板中的按钮数据绑定更改为
<button data-bind="click: r.toggleResponsiveDesign">
可能是您必须添加()
它才能使函数运行,因为它不适用于标题模板
<button data-bind="click: r.toggleResponsiveDesign()">
我会试一试
推荐阅读
- ios - 从方法 startDownloadingUbiquitousItem 下载的文件是哪个文件夹?
- azure-storage - 将数据从 Azure 备份(恢复服务保管库)复制/移动到常规存储帐户?
- bash - 如何在bash中动态构建包含空格的参数
- java - 使用 wasnull() 在 java 结果集中处理 null
- powerbi - 当外键在 JSON 数组中时,在 PowerBI 中建立一对多关系?
- javascript - 如何更改特定媒体查询的 CSS 类属性值?
- kdb - 我可以创建一个值为列表的字典吗
- git - Azure devops 错误:Git 签出失败,退出代码:1
- python - 如何用另一个数据框的对应值替换多列中的特定值?
- regex - 提取两个下划线之间的文本