淘汰赛 js 不从视图模型更新

knockout js not updating from view model

因此,在我看来,我有以下文本区域,我正在尝试通过敲除绑定进行更新。

这是来自视图的代码:

<textarea disabled id="CCHPISentence" style="width:99.7%; height:75px; resize: none; font-family:Verdana; overflow: auto;" data-bind="text: fullSymptomTextObservable"> </textarea>

这是应用绑定的 Jquery 函数,我想知道我的问题是否出在这里:

   $(function () {
    ko.applyBindings(symptomTextViewModel, document.getElementById("CCHPISentence"))
})

这是我的 ViewModel:

function symptomTextViewModel(fullText) {
if (fullText === undefined)
{ fullText = ""}
this.fullSymptomTextObservable = ko.observable(fullText.toString())

}

这是调用我的 ViewModel 的 js 函数的片段。我正在这个第二个 js 函数中构建 fullText 变量:

    //FINAL PARAGRAPH KNOCKOUT VM MAPPING
fullText = sentence1 + sentence2 + sentence3 + sentence4 + sentence5
var symptSentViewModel = new symptomTextViewModel(fullText)
symptomTextViewModel(fullText);

非常感谢任何能在这里帮助我的人。我觉得我错过了一些愚蠢的东西,我尝试了所有我能想到的不同方法,但没有成功。

使 fullSymptomTextObservable 成为 pureComputed 可观察的会更容易。这样,随着各种句子的变化,整个句子也会发生变化。这样你就可以利用 knockoutjs。

function SymptomTextViewModel(fullText) {
    var self = this;
    if (fullText === undefined) {
      fullText = ""
    }
    self.fullSymptomTextObservable = ko.observable(fullText.toString())
}

var vm = new SymptomTextViewModel('This is a test paragraph. Watch for the alert();');

ko.applyBindings(vm,document.getElementById("CCHPISentence"));

alert("about to use the vm variable to access the text.");

vm.fullSymptomTextObservable('Changing it to something else');


alert("about to use the ko.dataFor function");

var testVm = ko.dataFor(document.getElementById("CCHPISentence"));
testVm.fullSymptomTextObservable("Maybe this would be better suited to what you need.");
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>


<textarea disabled id="CCHPISentence" style="width:99.7%; height:75px; resize: none; font-family:Verdana; overflow: auto;" data-bind="text: fullSymptomTextObservable"></textarea>

首先,我会修复您的代码中所有缺失的分号。比检查视图模型函数中 'this' 的范围是否正确。来自浏览器控制台的一些信息也会有所帮助。检查是否没有任何敲除会抛出的错误。