knockout.js 如何在不可编辑脚本未应用绑定的视图元素中复制数据绑定函数?

x33g5p2x  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(100)

我是一个敲除的初学者,我在一个只有视图(称为模板)是可编辑的平台上工作-ViewModel是不可编辑的,甚至不可读的(除了阅读开发工具中的最小化代码)。
我试图将一个按钮从一个模板移动到另一个模板。但是,该按钮使用了一个数据绑定函数,并且每个模板都应用了来自不同ViewModel(javascript文件)的绑定(使用元素Id)。
请参阅Graphic

目前为止的想法

1.改变目标模板的主div的id是个坏主意。

  • 在div中使用与源模板相同的id Package 新按钮?
  • 因此,似乎有共识,重复的id是坏的。
  • 2个ViewModel是否会相互干扰?

如果是这样,是否可以仅为该新元素“暂停”或清除主元素?

  • 我应该尝试在目标模板的<script>标签中重新创建ViewModel的这一部分吗?
  • 这是令人生畏的,因为我不知道js和最小化

我在devtools中看到的文件很长,而且看起来不简单。

  • 还有别的事吗?
  • 谢谢-谢谢

**EDIT:**仅添加HTML按钮<button data-bind="click: toggleResponsiveDesign">Old UI</button>,显示一个按钮,但单击该按钮不执行任何操作。开发工具控制台在页面加载时出现错误(以及引用该错误的jQuery.Deferred exception警告):

未捕获的引用错误:无法处理绑定“单击:函数(){return toggleResponsiveDesign }”消息:未定义切换响应设计
 点击时(解析绑定字符串时的评估(CoreApp.js?v= v2011. 0. 1. 1:394),时间:3:58)
 在CoreApp.js?v=版本2011.0.1.1:394中
 在初始化时(核心应用程序js?v=v2011.0.1.1:394)
 在初始化时(核心应用程序js?v=v2011.0.1.1:394)
 在CoreApp.js?v=版本2011.0.1.1:394中
 在对象G处(核心应用程序js?v=v2011.0.1.1:394)
 在CoreApp.js?v=版本2011.0.1.1:394中
 对象D(核心应用程序js?v=v2011.0.1.1:394)
 在h时(核心应用程序js?v=v2011.0.1.1:394)
 (核心应用程序js?v=v2011.0.1.1:394)

sxpgvts3

sxpgvts31#

根据您的屏幕截图,您可能能够使clickhandler工作,因为Userpersonalisationapp.js的视图模型绑定到变量r,您可以将headerapp模板中的按钮数据绑定更改为

<button data-bind="click: r.toggleResponsiveDesign">

您可能需要在其中添加()才能使函数运行,因为它未应用于页眉模板

<button data-bind="click: r.toggleResponsiveDesign()">

我会给予看

mnowg1ta

mnowg1ta2#

我认为这是不可能的。如果你的图形是准确的,你正在使用两个完全独立的视图模型,它们之间没有任何连接或相互感知。如果视图模型是嵌套的,从另一个视图模型访问一个视图模型将是非常简单的,但在这里似乎不是这样。
实际上,这就是components的用途。通常,你会为整个应用程序调用applyBindings * 一次 *,而其余的则会被划分为组件,这样你就可以在它们之间共享数据和方法。你的应用程序目前的结构方式,你无法做到这一点。而且你显然不能编辑甚至不能很好地查看视图模型,这真的让我很困惑。

相关问题