簡體   English   中英

淘汰賽:如何將模型傳遞給j​​avascript對象文字?

[英]Knockout: how can I pass a model to a javascript object literal?

請通過以下鏈接訪問: http : //jsfiddle.net/nn0mfe48/1/

在這里,當我使用對象文字時,我可以使用敲除WITH綁定,但是當我將其更改為功能時,相同的代碼將無法正常工作。

作品:

var profileModel =  {
    first: ko.observable("Bob"),
    last: ko.observable("Smith"),
};

不起作用:

var  profileModel = function() {
    this.firstname= ko.observable("Bob");
    last: ko.observable("Smith");
};

我需要更改什么代碼才能使其正常工作。 我需要的時間是將淘汰的viewmodel對象傳遞給viewmodel並動態綁定值,而不是對值進行硬編碼。

我已經通過鏈接: 聲明為對象文字和函數的敲除視圖模型之間的差異

但無法理解如何利用我的情況。 希望我解釋清楚並且可以理解。 在這方面的任何幫助,不勝感激。

您在問題中的代碼正在混合對象文字語法和變量賦值語法。 此外,在函數中,您應該this變量分配給self / that變量以減輕范圍問題。 它還使使用ko.computed()更好。

var profileMod = function() { 
     var self = this;
    self.first = ko.observable("Bob");
    self.last = ko.observable("Smith");
    }

我已經更新了您的小提琴http://jsfiddle.net/nn0mfe48/3/

正確創建視圖模型后:

var profileModel = function() {
    this.firstname = ko.observable("Bob");
    this.lastname = ko.observable("Smith");
};

確保在綁定之前創建它的新實例

var vm = new profileModel();

和綁定

ko.applyBindings(vm);

另外,請謹慎使用with綁定。 您已經在shell模型周圍創建了一個上下文,該上下文迫使您使用$root訪問您的profile視圖模型。

暫無
暫無

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

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