knockout.js dosyasını clojurescript ile sıkıştırmaya çalışıyorum ancak bunun çok zor olacağını düşünüyorum. Benim sahip olduğum problem 'bu' değişkenin referansı. Vazgeçmeyi düşünüyorum ve sadece javascript'i doğrudan kullanıyorum.clojurescript kullanarak knockout.js sarmalanıyor
Sanırım bazı makrolar kolay fonksiyonları sarmak için başardınız http://knockoutjs.com/examples/helloWorld.html ve http://knockoutjs.com/examples/contactsEditor.html
kapalı örnekler aldık. Örneğin:
var ViewModel = function() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
this.fullName = ko.computed(function() {
// Knockout tracks dependencies automatically. It knows that fullName depends on firstName and lastName, because these get called when evaluating fullName.
return this.firstName() + " " + this.lastName();
}, this);
};
olur:
(defviewmodel data
(observing :first_name "Bert")
(observing :last_name "Bertington")
(computing :name [:first_name :last_name]
(str :first_name " " :last_name)))
Ancak daha sert gibi bir şey için:
var BetterListModel = function() {
this.itemToAdd = ko.observable("");
this.allItems = ko.observableArray(["Fries", "Eggs Benedict", "Ham", "Cheese"]); // Initial items
this.selectedItems = ko.observableArray(["Ham"]); // Initial selection
this.addItem = function() {
if ((this.itemToAdd() != "") && (this.allItems.indexOf(this.itemToAdd()) < 0)) // Prevent blanks and duplicates
this.allItems.push(this.itemToAdd());
this.itemToAdd(""); // Clear the text box
};
this.removeSelected = function() {
this.allItems.removeAll(this.selectedItems());
this.selectedItems([]); // Clear selection
};
this.sortItems = function() {
this.allItems.sort();
};
};
ko.applyBindings(new BetterListModel());
ben böyle bir kod eşleşecek şekilde clojurescript neler yapabileceğini emin değilim: this.allItems.push(this.itemToAdd())
Herhangi bir düşünce?
Bir ay boyunca sıkı tutabiliyorsanız, Keming Labs'da dahili olarak kullandığımız Knockout.js-esinlenmiş bilgisayarlı gözlemlenebilir kitaplık kaynaklarından yararlanmaya açık olacağız. Github'a (@lynaghk) göz atın. –
Teşekkürler Kevin! Kütüphaneyle uğraşmayı dört gözle bekliyorum. Bununla birlikte, clojure'nin sahip olmadığı diğer iç değişkenlere erişen değişkenleri bildirme gibi benzer türde problemlere sahip olan çok fazla sayıda javascript kütüphanesi vardır. Ben js ve cljs arasında enterpolasyon için net bir yolu olması önemli olduğunu hissediyorum. Ben clojurescript ande javascript ile oynadığım daha çok, iyi js kütüphanelerinin liseli bir şekilde olduğunu daha fazla buldum ... ki bu sadece clojure'ı öğrendikten sonra bağlantıyı gördüm. Neyse, cevabım hakkındaki yorumlarınızı – zcaudate
'dan almayı umuyoruz. Http://fluentsoftware.github.com/cljs-binding/ adresine bakın, Knockout kadar olgun değil, ama .. – edtsech