我想打個招呼到stackoverflow社區。更新字段與jQuery不更新可觀察
我剛剛開始使用淘汰賽前幾天。
我知道我正在使用它來爲我正在處理的CMS製作動態菜單生成器。
下面是代碼:http://jsfiddle.net/dnlgmzddr/HcRqn/
的問題是,當我選擇從選擇框中選擇一個元素,輸入字段更新如我所料,但可觀察到的不反映更改。因此,添加按鈕未啓用。
我錯過了什麼?我該如何解決它?
謝謝。
我想打個招呼到stackoverflow社區。更新字段與jQuery不更新可觀察
我剛剛開始使用淘汰賽前幾天。
我知道我正在使用它來爲我正在處理的CMS製作動態菜單生成器。
下面是代碼:http://jsfiddle.net/dnlgmzddr/HcRqn/
的問題是,當我選擇從選擇框中選擇一個元素,輸入字段更新如我所料,但可觀察到的不反映更改。因此,添加按鈕未啓用。
我錯過了什麼?我該如何解決它?
謝謝。
當你填入URL字段中,您將需要觸發更改事件獲取要更新過的可觀察的。所以,你可以這樣做:
$("#url").val('/pages/' + id).change();
另一個選擇,雖然這是在淘汰賽精神更多的是在你的選擇使用綁定。在這種情況下,您可能希望使用該值填充observable,然後使用手動訂閱將默認格式化值輸入到輸入字段中。
this.itemUrl = ko.observable();
this.selectedUrl = ko.observable();
this.selectedUrl.subscribe(function(newValue) {
if (newValue) {
this.itemUrl("/pages/" + newValue);
}
}, this);
然後,結合你的選擇selectedUrl
:
<select id="pagedList" data-bind="value: selectedUrl">
<option value=""><option>
<option value="test">Test</option>
</select>
這裏有一個例子:http://jsfiddle.net/rniemeyer/HcRqn/21/
你也可以消除額外的可觀察到的和手動訂閱如果你的選擇「值」是網址。
我看不到你的代碼中的任何地方,當你選擇一個字段時,你實際上啓用了這個按鈕。所以我可能會錯過一些東西,但只是啓用更改按鈕。像下面這樣:
function LoadMenu() {
$("#pagedList").change(function() {
var id = $(this).val();
$("#url").val('/pages/' + id);
// remove the disabled attribute here
$('button.space').removeAttr('disabled');
});
}