簡體   English   中英

使用敲除綁定html元素中的文本值

[英]Binding text value in html element using knockout

我有一個彈出div,其中包含我要在彈出窗口實際彈出時生成的錯誤消息。 在我的彈出div我有一個p標記,該標記的文本被數據綁定到一個返回字符串(錯誤消息)的函數中。 我之前已經做過類似的事情,但都取得了很大的成功,但是這次我在努力成功地正確綁定值。
HTML div(忽略jQuery Mobile屬性):

<div data-role="popup" id="ErrorRowValidation" data-overlay-theme="b" data-theme="a" class="standarddialog" data-dismissible="false">
    <div data-role="header" data-theme="a" class="ui-corner-top">
        <h1>Error</h1>
    </div>
    <div data-role="content" data-theme="d" class="ui-corner-bottom ui-content">
        <p data-bind="text: $root.getModelErrorText.bind($root)" class="validationError"></p>
        <a href="#" data-role="button" data-icon="check" data-inline="true" data-bind="click: $root.correctRowValue.bind($root)" data-theme="a">Edit</a>
        <a href="#" data-bind="click: $root.undoValidation.bind($root)" data-role="button" data-icon="delete" data-inline="true" data-rel="back" data-theme="a">Undo changes</a>
    </div>
</div>

我的JavaScript(實際上是打字稿)函數成功返回了正確的字符串,所以這不是問題,但無論如何這里是:

public getModelErrorText(): string {
    return lang.translateNewlineString(this.model.ErrorText());
}

我認為寫入data-bind="text: $root.getModelErrorText.bind($root)" ..時,我沒有正確地綁定文本值。
使用上面的代碼,結果得到function() {[native code]} 我也曾嘗試做data-bind="text: $root.getModelErrorText()"沒有成功; 該頁面甚至不會加載。 我是使用Knockout的新手,所以我真的不知道自己在做什么...非常歡迎您提出任何建議!

我認為寫入data-bind="text: $root.getModelErrorText.bind($root)"時無法正確綁定文本值

確實,這是不正確的,並且會導致function() {[native code]}

bind不會執行您的函數,它只是創建一個具有不同執行上下文的新函數(這可能會或可能不會由我正確地表述,但是我100%肯定不會執行該函數)。

data-bind="text: $root.getModelErrorText()"應該起作用,如果所有其他事情都起作用。 因此,我不確定100%為什么這對您不起作用。 我們需要其他信息來進行調試(更多代碼,例如您的viewModel,html和applyBindings調用)。 一個不錯的選擇,就是this在你的函數getModelErrorText沒有當通過結合執行設置視圖模型。 通過將函數轉換為fat arrow syntax ,可以很容易地看出這是否是問題所在,如下所示:

public getModelErrorText = () => {
    return lang.translateNewlineString(this.model.ErrorText());
}

這應該保證this指向您的視圖模型。

如果這樣不能解決問題,您可以使用我上面提到的代碼編輯帖子,我也將編輯答案。

編輯:

另一種可能性是,在應用綁定時, this.modelthis.model.ErrorText是真實值(例如,它為nullundefined )。 在這種情況下, this.model.ErrorText()將失敗,因為您試圖執行一個尚不存在的函數(可觀察的),因為它是在以后的某個時間點初始化的。 確保viewModel中的默認值具有使用ErrorText函數/ observable正確設置的model 如果您的頁面無法加載,請嘗試在developer tools -> console查找,了解是否Knockout會顯示錯誤消息。 如果您將其發布在這里,可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM