// Generated by CoffeeScript 1.6.1
(function() {
var $, List, Work,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
_this = this;
$ = jQuery;
Work = (function(_super) {
__extends(Work, _super);
function Work() {
return Work.__super__.constructor.apply(this, arguments);
}
Work.configure("Work", "author", "work_name", "work_link", "pub_date", "change_date", "size");
Work.extend(Spine.Model.Ajax);
Work.url = "/samlib/profile_user_json/";
Work.fetch = function(clear) {
if (clear) {
console.log("clear: " + clear.clear);
this.deleteAll();
}
return Work.__super__.constructor.fetch.apply(this, arguments);
};
return Work;
})(Spine.Model);
List = (function(_super) {
__extends(List, _super);
List.prototype.className = 'List';
List.prototype.events = {
'click li': 'my_click'
};
function List() {
var _this = this;
this.logged = function(auth) {
return List.prototype.logged.apply(_this, arguments);
};
this.addAll = function() {
return List.prototype.addAll.apply(_this, arguments);
};
this.addOne = function(task) {
return List.prototype.addOne.apply(_this, arguments);
};
this.render = function(message) {
return List.prototype.render.apply(_this, arguments);
};
List.__super__.constructor.apply(this, arguments);
Work.bind('refresh', this.addAll);
Spine.bind('login:change', this.logged);
}
List.prototype.my_click = function(e) {
return e.preventDefault();
/*
здесь какой-то код который должен найти по переданному элементу элемент в модели
*/
};
List.prototype.render = function(message) {
return console.log(message);
};
List.prototype.addOne = function(task) {
if (task.work_name) {
this.teml = "<li><a href='" + task.work_link + "'>" + task.work_name + "</a></li>";
$("#list").append(this.teml);
return this;
}
};
List.prototype.addAll = function() {
return Work.each(this.addOne);
};
List.prototype.logged = function(auth) {
console.log(Spine.auth);
return Work.fetch({
clear: true
});
};
Work.fetch();
return List;
})(Spine.Controller);
$(function() {
return new List({
el: $("#works")
});
});
}).call(this);
В коде используется фреймоврк Spine.js
Как я себе это вижу:
У каждого элемента в модели есть индентификатор, вставлять его в каждый элемент и по нему уже тогда идентифицировать. Но возможно есть более правильные способы, я хотел о них узнать, как вообще называется это связывание правильно, на английском, чтобы поискать материал по этой теме.