1
這可能是一個非常初學者的問題,或者我一次使用太多東西。我正在嘗試使用KnockoutJS和Revealing Module Pattern並嘗試編寫CoffeeScript。我把模型放在一個單獨的函數中。下面是代碼:揭示模塊模式,KnockoutJS和CoffeeScript
myapp =(->
person =->
firstname = ko.observable "k"
lastname = ko.observable "d"
firstname:firstname,
lastname:lastname
person : person
)()
$(->
ko.applyBindings(new myapp.person())
@
)
現在,這是使用工作臺在Visual Studio這樣的JavaScript創建:
(function() {
var myapp;
myapp = (function() {
var person;
person = function() {
var firstname, lastname;
firstname = ko.observable("k");
lastname = ko.observable("d");
return {
firstname: firstname,
lastname: lastname
};
};
return {
person: person
};
})();
$(function() {
ko.applyBindings(new myapp.person());
return this;
});
}).call(this);
現在,這是給錯誤,現在能找到的元素與束縛。這裏是簡單的HTML文本:
<p>
Firstname<span data-bind="text: myapp.person().firstname"></span>
Lastname<span data-bind="text: myapp.person().lastname">
</span>
</p>
如果我創建正常的JavaScript沒有自稱爲函數它工作正常。這裏是功能:
myapp = (function() {
var person;
person = function() {
var firstname, lastname;
firstname = ko.observable("k");
lastname = ko.observable("j");
return {
firstname : firstname,
lastname : lastname
}
}
return {
person: person
}
})();
$(function() {
ko.applyBindings(new myapp.person());
})
任何人都可以解釋什麼問題在這裏?還是有另一種編寫CoffeeScript來使用KnockoutJS的方法?
如果需要更多細節,請發表評論。
它的工作。謝謝。還有一個要求,請你解釋一下我做錯了什麼或者約束如何工作。所以,下次我會照顧的。 再次感謝。 – kunjee 2012-08-02 15:31:50
它簡單,當你調用ko.appyBindings(x)你爲你的視圖定義一個模型(x)。這意味着您只能從data-bind訪問x屬性。當您調用新的myapp.person()時,您創建了一個人對象。這意味着您只能訪問名字和姓氏字段。但是您使用myapp.person()。firstname來獲取人名。模型中不存在myapp和person對象。我將我的模型設置爲具有新創建的人物對象的myapp。所以我可以首先訪問person對象,然後從data.black像person.firstname那樣訪問它的字段 – Luffy 2012-08-02 15:58:38