Я пытаюсь подключить (в Angular, у клиента) тот же объект базы данных через свой html-представление, к его эквивалентному экземпляру через json API.
У меня есть рабочий api и ресурс $, и у меня есть рабочий вид, я просто не могу понять, как создать привязку, чтобы обновления к обновлению отображали ресурс Angular model/$.
В частности, у меня есть вид HTML населенной стороны сервера, который содержит атрибут ngBind:
<div class="ng-scope" ng-app="Posts">
<div class="ng-scope" ng_controller="PostsCtrl">
<span contenteditable="true" ng-bind="post.1.text">post.1.text value</span>
</div>
</div>
Есть несколько из них на странице с уникальной ids.For цели, например, если это проще подумайте об этом как текстовом поле формы, затем проигнорируйте «contenteditable», я буду заниматься этой частью отдельно.
Формат этого атрибута является гибким, что это просто, как это в настоящее время (т.е. post.1.text может быть post_1_text, или разделить полностью по мере необходимости.)
Завод ресурсов выглядит следующим образом (кофе сценарий , но ответы в JS одинаково благодарность !:
app = angular.module 'Posts', ['ngResource']
app.factory 'Post', ($resource) ->
$resource('/api/posts/:id', {id: '@id'})
app.controller "PostsCtrl", @PostsCtrl = ($scope, Post) ->
$scope.posts = Post.query()
успешно заполнит коллекцию сообщений (не требуется для этого примера, но показывает API работает).
Итак, что нг-связывание взгляд как, и как связать contro ller, чтобы получить обновления представления, написанные обратно в API?
(я знаю, что я мог бы просто использовать ng_repeat: "post in posts"
, но просто пойти со мной, что я действительно хочу сделать это. «Это сложно» :-)
Спасибо!
Edit: Вот jsfiddle, который показывает примерно то, что я пытаюсь достичь:
... но я хотел бы идентификатор, чтобы привязать к ключу объекта «ид», а не к индексу объекта в массиве.
Что такого сложного, что имеет смысл сначала создать представление, а затем попытаться совместить представление с моделью? Вы могли бы сделать это с помощью директив и некоторых элементов, чтобы получить индексирование, но оно кажется таким обратным, трудно проверить и подвержено ошибкам. Демо поможет – charlietfl
Пользовательские шаблоны жидкости. Содержимое представления неизвестно, но я могу ввести атрибуты ng-bind для идентификации включенных ресурсов. Думая об этом, можно даже динамически модифицировать js до того, как он будет отправлен клиенту, но я бы предпочел! Демонстрация выполнима, но я надеюсь, что все релевантно находится в этом вопросе. – Matt
'ng-bind' автоматически заполнит текст (а не html). Поэтому, если это все, что вам нужно ... вы должны иметь возможность создать соглашение соответствия между массивом и массивом контроллера, просто используя '$ index', если я правильно понимаю ситуацию. – charlietfl