EDITEDJS應用自動刷新/元素消失EDITED
設法得到大部分的工作,但有接近尾聲的一個問題。
我有一個帶有幾個輸入字段和div元素的html文件,當它創建時我必須添加一個配方。
所以我有兩個模塊分開 - 食譜和書籍,和一個app.js文件,然後應該將兩者結合到一個工作的應用程序。
現在的問題是,只要我點擊添加按鈕,配方只顯示一毫秒,然後消失..我不知道爲什麼。難道是因爲我的課程是自我調動的?我試圖以非常規的方式運行,並且由於某種原因,運行x instanceof y
總是返回false。 我上傳了一個可視化問題的簡短視頻。
而且當我打電話book.getRecipes()後,我試圖把裏面的書對象R I得到[對象對象],而不是被包含在'r的值。
如果需要可以提供更多信息。
謝謝
var Recipe = (function() {
var nextId = 1;
var constr = function(name, rating, image, category) {
this._id = nextId++;
this._name = name || '';
this._rating = rating || '';
this._image = image || '';
this._category = category || '';
this.setName = function(name) {
this._name = name;
};
this.setRating = function(rating) {
this._rating = rating;
};
this.setImage = function(image) {
this._image = image;
};
this.setCategory = function(category) {
this._category = category;
};
};
return constr;
})();
而且
var Book = (function() {
var construct = function(recipes) {
this._recipes = recipes || [];
this.addRecipe = function(recipe) {
this._recipes.push(recipe);
};
this.removeRecipe = function(id) {
this._recipes.splice(id, 1);
};
this.getRecipes = function() {
return this._recipes;
};
};
return construct;
})();
而且app.js它全部初始化(loadData函數是預先編寫的(不是我)!):
var app = app || {};
(function(recipeBook) {
var book = new Book();
var r = new Recipe();
$('#add_book').click(function() {
var $name = $('.uk-form').find('#name').val();
var $rating = $('.uk-form').find('#rating').val();
var $image = $('.uk-form').find('#image').val();
var $category = $('.uk-form').find('#category :selected').val();
r._name = $name;
r._rating = $rating;
r._image = $image;
r._category = $category;
book.addRecipe(r);
//trying add a recipe into the book
loadData();
});
$("#clear_book").click(function() {
(".uk-form").reset();
console.log('clears recipe form');
});
$(document).on('click','.remove',function(ev){
// still not implemented
console.log('remove target recipe by Id');
loadData();
});
loadData();
function loadData() {
var meat = book.getRecipes().filter(function(r) {
return r._category === "meat";
});
var vegan = book.getRecipes().filter(function(r) {
return r._category === "vegan";
});
var dessert = book.getRecipes().filter(function(r) {
return r._category === "dessert";
});
var source = $("#recipe-trmplate").html();
var template = Handlebars.compile(source);
var contextMeat = {meat:meat};
var contextvegan = {meat:vegan};
var contextdessert = {meat:dessert};
var html = template(contextMeat);
var html2 = template(contextvegan);
var html3 = template(contextdessert);
$('#meat_recipes').html(html);
$('#vegan_recipes').html(html2);
$('#dessert_recipes').html(html3);
}
}(app));
app.js大部分是由其他人預先編寫的,我的工作是添加DOM操作(添加/刪除書籍等)
您可以添加HTML嗎? – afuous
你有點兒把'新'邏輯與功能邏輯混合在一起。你想走哪條路? – Taplar
http://collabedit.com/d3ss7 –