我们使用的是javascript / typescript,并且无法在DevExtreme(打字稿)项目中的dxTextArea中传递“输入的文本”。

我们正在使用:

 <div id="myTextArea" data-bind="dxTextArea: {showClearButton: true,value: 'MyTests'}" ></div>

 <div  data-bind="dxButton: { text: 'Save text' }" onclick="saveMyData(document.getElementById('myTextArea').innerText)"></div>


函数“ saveMyData”定义为:

<script>
function saveMyData(myData)
{
alert("text is "+myData.innerText);
mytext.innerText += myData.innerText;
}
</script>


但是,警报仅包含


  文字是




我们也尝试了textContent,但是得到了相同的结果。

任何人都知道为什么会这样吗?

屏幕上没有错误,因此我们认为这不是声明错误。

(注:此代码已简化以用于演示目的)。



以下是“最有用/最详细”文档的链接:

Link to dxTextArea documentation

请随时提出澄清/细节,因为我知道我在纸面上解释自己的能力很差。我只会张贴一个小提琴,只是它不会/不会识别dxTextAreadxButton,所以非常没用!

编辑

按照建议使用innerHTML可以得到:

最佳答案

您可以获取dxTextArea小部件的实例并获取选项value的值

参见小提琴:http://jsfiddle.net/tabalinas/c4dmsmeL/2/

<div id="textArea" data-bind="dxTextArea: { value: 'My value' }"></div>
<div data-bind="dxButton: { clickAction: buttonClick, text: 'Get value' }"></div>

var vm = {
    buttonClick: function() {
        var val = $("#textArea").dxTextArea("instance").option("value");
        alert(val);
    }
};

ko.applyBindings(vm);


但是最好在绑定到dxTextArea的value选项的视图模型中使用ko.observable

参见小提琴:http://jsfiddle.net/tabalinas/c4dmsmeL/

<div data-bind="dxTextArea: { value: textAreaValue }"></div>
Text entered: <span data-bind="text: textAreaValue">

var vm = {
    textAreaValue: ko.observable("My value")
};

ko.applyBindings(vm);


如果要使用小部件胆量,可以执行以下操作:
http://jsfiddle.net/tabalinas/c4dmsmeL/3/

<div id="textArea" data-bind="dxTextArea: { value: 'My Value' }"></div>
<button id="getValue">Get value</button>


ko.applyBindings();

$("#getValue").click(function() {
    alert($("#textArea").find("textarea").val());
});


但是,我认为没有任何理由采用这种更干净的方法。

10-07 21:34