請問有人可以幫我嗎?Knockout - 如何從嵌套函數訪問父屬性?
*Uncaught TypeError: Object #<Object> has no method 'baseUri'*
這種方法是從下面的結合稱爲:
<form id="createProducts" data-bind="submit: products.create">
當讀取執行方法
執行創建方法時,我發現了以下錯誤,從PreOoad方法調用,均爲baseUri和項目可用。
當視圖模型被定義爲一個函數時,我發現這個問題的解決方案,但在我的情況下,它被定義爲一個對象。
這是我的全部JS文件
var mm = {
/* Products ********************************************************** */
products: {
items: ko.observableArray([]),
read: function() {
$.getJSON(this.baseUri(), this.items);
},
create: function (formElement) {
$.post(this.baseUri(), $(formElement).serialize(), null, "json")
.done(function (o) {
alert("The Product " + o.Name + " was created.");
this.items.push(o);
});
},
baseUri: function() { return BASE_URI; }
}
};
function PreLoad() {
mm.products.read();
ko.applyBindings(mm);
}
- BASE_URI是我的母版頁中定義一個全局變量,我需要它,因爲我有多個嵌套的視圖模型(我從這段代碼中刪除它們),每個baseUri都是BASE_URI +「some_string_value」的組合。無論如何,我還需要訪問項,以便更新列表中顯示的值。
謝謝!
謝謝邁克爾!第一個選項部分解決了這個問題。** this.baseUri **是現在可用,但** this.items **是未定義的。也許是因爲它在**。done(函數**。 – TPaim
正確。我已經擴大了答案來處理這個問題。 –
完美的邁克爾!我嘗試,但我把綁定放在錯誤的地方('})。bind'而不是'} .bind')。非常感謝! – TPaim