用于行属性的textarea剔除属性绑定不起作用

时间:2018-08-20 09:54:41

标签: javascript knockout.js

我想通过敲除2.3.0来更改texterea的高度

我将texterea的值绑定到“ FileData”可观察字段 并希望将texterea rows属性更改为“ FileData”中的行数

值绑定工作正常,但attr不起作用

var self = this;
self.FileData = ko.observable("");

self.lineBreakCount = function(str) { 
  /* counts \n */ 
  try { 
    return ((str.match(/[^\n]*\n[^\n]*/gi).length)) + 1; 
  } catch (e) {
    return 0; 
  } 
}

self.buttonClick = function () {
$.get(url, {  })
.success(function (serverData) { self.FileData(serverData);})
}
<button type="button" data-bind="click: buttonClick">Click Me</button>
<textarea readonly="readonly" data-bind="value: FileData, attr: { 'rows': lineBreakCount(FileData)}"></textarea>

1 个答案:

答案 0 :(得分:1)

您的lineBreakCount期望有一个string,但是您正在传递一个包含{em>一个observable的{​​{1}}。

要解决此问题,请在绑定(string)或方法(lineBreakCount(FileData()))中解开可观察对象

str().match
var VM = function() {
  var self = this;
  self.FileData = ko.observable("");

  self.lineBreakCount = function(str) {
    /* counts \n */
    try {
      return ((str.match(/[^\n]*\n[^\n]*/gi).length)) + 1;
    } catch (e) {
      return 0;
    }
  }

  self.buttonClick = function() {};
};

ko.applyBindings(new VM());