【问题标题】:Multiple Knockout binding with function and variable具有函数和变量的多个 Knockout 绑定
【发布时间】:2016-03-16 02:08:59
【问题描述】:

多重敲除绑定。

我只想使用一个应用绑定而不是两个应用绑定。一个是变量,另一个是函数。我也在使用requireJS。

HTML:

<button id= "Hand" name="Hand"
                    data-bind="click: Handler2">
            </button>

KnockoutJS

function (ko, $)
        {                                            
            function DM1ViewModel() {
                var self = this;
                self.bId = ko.observable('TEST456');

            }
            $('#hide').hide();


        var DMD2 = {
        Handler2: function() {

           window.location='http:www.google.com';
        }
    };

           ko.applyBindings(new DM1ViewModel(), document.getElementById('Container'));
           ko.applyBindings(DMD2);
            });

【问题讨论】:

  • 从您的样本中不清楚目标是什么 - 容器不可见。您可以多次应用绑定,前提是每个绑定指定一个单独的非重叠元素。应用没有元素的绑定适用于整个页面,因此会与“容器”绑定冲突
  • @Quango :不可能只应用一个应用绑定。

标签: javascript html knockout.js data-binding requirejs


【解决方案1】:

就目前而言,实际上没有理由在 DMD2 对象上应用绑定,因为那里没有任何可观察对象。

但是,为了更笼统地回答您的问题,您有两种选择:

  1. 针对不包含您的 Container 元素且尚未包含在您的 Container 元素中的元素调用 DMD2 的 applyBindings。

Javascript:

// DM1ViewModel is the same
var DMD2ViewModel = function() {
    this.Handler2 = function() {
        window.location='http:www.google.com';
    };
}
ko.applyBindings(new DM1ViewModel(), document.getElementById('DM1Container'));
ko.applyBindings(new DMD2ViewModel(), document.getElementById('DMD2Container'));

HTML

<div id="Container">
    <div id="DM1Container">
        <h2 data-bind="text: bId"></h2>
    </div>
    <div id="DMD2Container">
         <h2 data-bind="click: Handler2">Click me</h2>
    </div>
</div>
  1. 创建一个父视图模型,将现有的每个视图模型作为可观察对象,并使用with binding

Javascript:

var PageViewModel = function(){
    this.dm1 = ko.observable(new DM1ViewModel());
    this.dm2 = ko.observable(DMD2); // currently isn't a function, so can't call new
}

ko.applyBindings(new PageViewModel(), document.getElementById('Container'));

在您的 html 中:

<div id="Container">
    <div data-bind="with: dm1">
        <h2 data-bind="text: bId"></h2>
    </div>
    <div data-bind="with: dm2">
         <h2 data-bind="click: Handler2">Click me</h2>
    </div>
</div>

【讨论】:

  • 我想不使用'with binding'使用
  • 更新了第一个选项以显示您将如何使用 2 个绑定进行操作。看看有没有帮助
猜你喜欢
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多