Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除JS将视图模型绑定到多个分布式元素ID_Javascript_Knockout.js - Fatal编程技术网

Javascript 敲除JS将视图模型绑定到多个分布式元素ID

Javascript 敲除JS将视图模型绑定到多个分布式元素ID,javascript,knockout.js,Javascript,Knockout.js,这与我的问题类似,但解决方案似乎是在附近创建一个公共父级。就通用性而言,我唯一能做的就是绑定到文档或类似的东西,但这样做会破坏目的: 建议像这样将单个视图模型实例绑定到多个ID。我试过了,在一些简单的情况下也能奏效: ko.applyBindings(newVm, document.getElementById('grapes')); ko.applyBindings(newVm, document.getElementById('apples')); 我这样做的原因是,我希望使用内置功能绑

这与我的问题类似,但解决方案似乎是在附近创建一个公共父级。就通用性而言,我唯一能做的就是绑定到
文档
或类似的东西,但这样做会破坏目的:

建议像这样将单个视图模型实例绑定到多个ID。我试过了,在一些简单的情况下也能奏效:

ko.applyBindings(newVm, document.getElementById('grapes'));
ko.applyBindings(newVm, document.getElementById('apples'));
我这样做的原因是,我希望使用内置功能绑定到单个页面应用程序上的特定元素,但这些元素没有公共父元素

应用绑定时,是否创建了视图模型实例的任何副本,从而导致该实例占用内存

这不是将多个视图模型转换为单个页面视图,也不是将多个视图模型转换为同一元素。一个示例用例是
serverConnection
视图模型,其中连接和断开连接按钮位于工具栏的顶部,而连接状态位于状态栏的底部

是否建议将单个视图模型实例绑定到多个ID

不,不推荐。但也不一定是错的

建议的方法是将
绑定一起使用。例如:

JS HTML

连接
断开

谢谢你的例子。所以带有
绑定作用域的
从全局级别开始,我想您可以嵌套它们以获得更具体的信息?我想这就是我一直在寻找的。没错!您可以在中阅读更多关于它的信息
const serverConnection = new ServerConnection();
const app = new App();

ko.applyBindings({ app, serverConnection });
<body>
  <header data-bind="with: serverConnection">
    <button data-bind="click: connect">Connect</button>
    <button data-bind="click: disconnect">Disconnect</button>
  </header>

  <article data-bind="with: app">
    ...
  </article>

  <footer data-bind="with: serverConnection">
    <div data-bind="text: statusCode"></div>
  </footer>
</body>