2014-03-06 21 views
0

Im對於knockout.js基本上是新的。我想獲得重點輸出的輸入值。焦點輸出事件將觸發一個函數,它會改變我的observable數組變量上的一些項目。如何獲得關於淘汰賽焦點輸入的當前值

下面的代碼:

<input placeholder="Enter a caption" type="text" data-bind="event:{focusout: $parent.modifyPhotoCaption(id, $(this).val())}" /> 

然而,$(本).VAL()不工作,也不是this.val。我想立即獲取當前輸入的值。

感謝您的幫助。

更新:

我想我沒有給出很多細節。爲什麼我想獲得的價值的原因immidiately是因爲有大量的輸入文字:

<input placeholder="Enter a caption" type="text" data-bind="event:{focusout: $parent.modifyPhotoCaption(id, $(this).val())}" /> 
<input placeholder="Enter a caption" type="text" data-bind="event:{focusout: $parent.modifyPhotoCaption(id, $(this).val())}" /> 
<input placeholder="Enter a caption" type="text" data-bind="event:{focusout: $parent.modifyPhotoCaption(id, $(this).val())}" /> 

我不知道如何通過一個數組得到的值。而且看起來這樣做是最快的

+2

我寧願將您的輸入綁定到可觀察值,然後訂閱observable。 – Marius

+1

一個問題:如果您已經使用Knockout綁定 - 爲什麼不簡單地將您的照片標題和輸入字段綁定到viewmodel中的相同對象/屬性?手動觸發標題的更新對我來說似乎完全沒有必要。 – Robert

+0

顯示完整的視圖模型。 – alexmac

回答

1

正如我對你的問題評論:使用observable屬性並訂閱它。除非綁定項是可觀察數組的一部分,否則請在訂閱中的observablearray中執行所需的任何更改。

var VM = function() { 
    var self = this; 

    self.foo = ko.observable(); 

    self.foo.subscribe(function() { 
     // do whatever needed. 
     console.log(self.foo()); 
    }); 
}; 

ko.applyBindings(new VM()); 
+0

嗨馬呂斯,我更新了這個問題 – comebal