[英]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.model
或this.model.ErrorText
是真實值(例如,它為null
或undefined
)。 在這種情況下, this.model.ErrorText()
將失敗,因為您試圖執行一個尚不存在的函數(可觀察的),因為它是在以后的某個時間點初始化的。 確保viewModel中的默認值具有使用ErrorText
函數/ observable正確設置的model
。 如果您的頁面無法加載,請嘗試在developer tools -> console
查找,了解是否Knockout會顯示錯誤消息。 如果您將其發布在這里,可能會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.