Ответ 1
рабочая привязка, например, выше... http://jsbin.com/ivumuz/2/edit
он демонстрирует способ работы с Backbone Models с AngularJS. но соединение с сеттерами/геттерами будет лучше.
Недавно я думал о различиях и сходствах между Backbone.js и AngularJS.
То, что я нахожу очень удобным в Backbone, - это модели Backbone и модели Backbone-Collections. Вам просто нужно установить urlRoot, а затем связь с сервером через Ajax в основном работает.
Нельзя ли использовать только шаблонные модели и коллекции в приложении AngularJS? Таким образом, у нас будет лучшая двухсторонняя привязка данных по двум направлениям с AngularJS и удобный доступ к серверной стороне (или другим параметрам хранилища) через Backbone-Models и Collections.
Быстрый поиск в Интернете не показал ни одного сайта, предлагающего этот сценарий использования. Все ресурсы либо говорят об использовании той или иной инфраструктуры.
Есть ли у кого-то опыт использования моделей Backbone-моделей или коллекций с помощью AngularJS. Разве они не будут хорошо дополнять друг друга? Я что-то не хватает?
рабочая привязка, например, выше... http://jsbin.com/ivumuz/2/edit
он демонстрирует способ работы с Backbone Models с AngularJS. но соединение с сеттерами/геттерами будет лучше.
Имел подобную идею в виду и придумал эту идею: Добавьте только атрибут getter и setter для любой модели.
Backbone.ngModel = Backbone.Model.extend({
initialize: function (opt) {
_.each(opt, function (value, key) {
Object.defineProperty(this, key, {
get: function () {
return this.get(key)
},
set: function (value) {
this.set(key, value);
},
enumerable: true,
configurable: true
});
}, this);
}
});
Смотрите скрипту: http://jsfiddle.net/HszLj/
Мне было интересно, сделал ли кто-нибудь это тоже. В моем последнем/первом angular приложении я обнаружил, что angular не хватает моделей и коллекций (если я, конечно, не пропустил что-то!). Конечно, вы можете вытащить данные с сервера с помощью $http или $resource, но что, если вы хотите добавить собственные методы/свойства к вашим моделям или коллекциям. Например, скажем, у вас есть коллекции автомобилей, и вы хотите рассчитать общую стоимость. Что-то вроде этого:
С помощью Backbone Collection это было бы довольно легко реализовать:
carCollection.getTotalCost()
Но в Angular вам, вероятно, придется обернуть свой собственный метод в службу и передать вам свою коллекцию, например:
carCollectionService.getTotalCost(carCollection)
Мне нравится подход Backbone, потому что он читает чище, на мой взгляд. Однако получение двухсторонней привязки данных является сложным. Проверьте этот пример JSBin.
http://jsbin.com/ovowav/1/edit
Когда вы редактируете номера, коллекция .totalCost не обновляется, так как свойства car.cost не устанавливаются через model.set().
Вместо этого я в основном использовал свои собственные конструкторы/ "классы" для моделей и коллекций, скопировал подмножество Backbone API из Backbone.Model и Backbone.Collection и изменил мои пользовательские конструкторы/классы, чтобы он работал с angular привязка данных.
Попробуйте взглянуть на restangular.
Я нигде не реализовал его, но пару дней назад я поговорил об этом. Кажется, эта проблема решается с помощью angular.
Действительный вопрос наверняка.
Множество ограничений с текущей реализацией $resource, в котором, помимо прочего, нет внутреннего управления коллекциями, например Backbone.Collection. Написав свой собственный уровень управления коллекцией/ресурсами в angular (используя $http, а не $resource), теперь я вижу, могу ли я заменить большинство внутренних элементов шаблона для коллекций и моделей с базой.
Пока выборка и добавление являются безупречными и сохраняют код, но привязка этих базовых моделей (или атрибутов внутри, скорее) к ng-моделям на входах для редактирования еще не работает.
@ericclemmons (github) сделал то же самое и заставил двоих хорошо жениться - я спрошу его, приготовлю свой тест и опубликую заключение...
Мне было интересно то же самое -
Это прецедент:
salesforce mobile sdk (hybrid) имеет функцию smartstore/smartsync, которая рассчитывает базовые модели/коллекции, которые сохраняются в локальном хранилище для автономного доступа.
И вы догадались, что правильно, мы хотим использовать angularjs для отдыха гибридного приложения.
Действительный вопрос.
-Sree
Вы должны посмотреть на шаблон angularJS с описанием здесь. Парс - это позвоночник, но не совсем основа. Вот где я начинаю свое представление о проекте angularJS backboneJS