Привязка модели к дом элементам.
Добрый день.
Преамбула: Есть некая модель, которую нужно отобразить в, например, таблице. Потом пользователь захочет изменять эти данные, он нажимает на ячейку в таблице и должна происходить магия (данные изменяются в таблице и записываются в модель, которая взаимодействует с чем-то еще). Вопрос: Как соотнести нажатый элемент с элементом в модели данных? Какие есть способы организации этой связи? Какие слова набрать в гугле чтобы найти информацию по данной теме. З.Ы. Пишу совсем недавно. |
Тут бы пример какой-то не помешал бы... :D
|
// 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 Как я себе это вижу: У каждого элемента в модели есть индентификатор, вставлять его в каждый элемент и по нему уже тогда идентифицировать. Но возможно есть более правильные способы, я хотел о них узнать, как вообще называется это связывание правильно, на английском, чтобы поискать материал по этой теме. |
в простейшем случае: отсылаешь ajax-запрос с новыми данными (координаты ячейки + содержимое), записываешь в базу,
если таблица потенциально может менять свою структуру, следует подумать об eav |
модель в самом приложении.
Как определить что именно эти координаты соответсвуют конкретному полю в базе данных? Какие есть способы? |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 23:42. |