【问题标题】:Knock Out data binding敲除数据绑定
【发布时间】:2013-03-14 01:41:00
【问题描述】:

我有一个关于使用敲除的数据绑定的问题。

问题是:我有一个表,我想做的是,当单击表中的一行时,我希望该行的值出现在位于表上方的输入字段中。

所以这里'

<tbody data-bind="foreach: customers">
                        <tr data-bind="click: doSomething">     
                            <td data-bind="text: date"></td>
                            <td data-bind="text:staff"></td>
                            <td data-bind="text: ftype"></td>
                            <td data-bind="text: value"></td>
                            <td data-bind="text: message"></td>
                            </td>
                        </tr>
                    </tbody>

在我的视图模型中,我有以下功能:

doSomething: function(data) { 
        var self = this;      
        self.date(data.date);        
        self.staff(data.staff); 
        self.ftype(data.ftype);
                   self.value(data.value);
                   self.message(data.message);  

    }

这是我得到的错误:

["Unable to parse bindings.↵Message: ReferenceError:… is not defined;↵Bindings value: click: doSomething", "views/myView/index", Object]
   0: "Unable to parse bindings.↵Message: ReferenceError: doSomething is not          defined;↵Bindings value: click: doSomething"
 1: "views/myView/index"
  2: Object
length: 3
 __proto__: Array[0]

如果我需要提供更多详细信息,请告诉我。我会感谢你的帮助 fplks!

【问题讨论】:

    标签: html knockout.js


    【解决方案1】:

    这种类型的一个非常基本的模式是有一个项目数组和一个selectedItem observable,您在选择一行时填充它。

    然后,您可以在部分周围使用with 绑定来创建您的编辑器。

    <table>
        <tbody data-bind="foreach: customers">
            <tr data-bind="click: $root.selectedCustomer">     
                <td data-bind="text: name"></td>
            </tr>
        </tbody>
    </table>
    
    <hr/>
    
    <div data-bind="with: selectedCustomer">
        <input data-bind="value: name" />
    </div>
    

    示例:http://jsfiddle.net/rniemeyer/Z6VPV/

    【讨论】:

    • 让我试试这个,我会在一分钟内回复你
    • 顺便说一句,我写的方式有问题吗?如果是这样,那我该如何解决?我已经有一个可观察的数组,我用它来填充我的表并且它可以工作。但是当我添加点击事件时,它给了我解析错误并且表格不再显示数据
    • 最好的办法是在 jsFiddle 中获取一些可以证明您的问题的内容。
    【解决方案2】:

    您需要将模型绑定到视图

     var currentViewModel = function(){
       this.doSomething = function(data){
          var self = this;      
          self.date(data.date);        
          self.staff(data.staff); 
          self.ftype(data.ftype);
                     self.value(data.value);
                     self.message(data.message);  
      }
    var viewModel = new currentViewModel();
    ko.applyBindings(viewModel);
    

    【讨论】:

    • doSomething 方法中的内容是什么?
    • 我正在尝试将 dosomething 函数中的值绑定到我的输入字段,以便在我单击该行时显示这些值
    • 下面两行代码是进入函数还是留在函数之外?
    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多