AngularJS + Restangular — вызов .one() и .get() приводит к массиву?

Для этого я использую Angular 1.0.8 вместе с Restangular. Поскольку я только начинаю работать с js framework в целом, было бы очень полезно получить понятное для новичков объяснение.

У меня есть очень простой HTML <section> вроде этого (ng-app был определен в body):

<section class="comment-list block scrollable wrapper" style="height:350px" ng-controller="MessageStreamController">
    <div> {{ message.message }} </div>
    <div class="input-group">
        <input type="text" class="form-control" ng-change="change()" ng-model="message.message" placeholder="Input your comment here">
          <span class="input-group-btn">
            <button class="btn btn-primary" type="button" ng-click="clicked()">POST</button>
          </span>
    </div>
</section>

со следующим <script>

var JApp = angular.module('JApp', ['restangular']);

JApp.controller('MessageStreamController', function($scope, Restangular) {
  var service = Restangular.all('message-stream');

  $scope.clicked = function() {
    $scope.message = service.one('index', 1).get();
  }
})

В бэкенде /message-stream/index/1 он просто возвращает

return json_encode(array(
    'message' => 'Hey there James',
    'user' => 'Terry'
));

Это приводит к тому, что <div> {{ message.message }} </div> и input отображаются с надписью «Привет, Джеймс». Пока все хорошо.

Но потом я не могу редактировать поле ввода после этого.

В некоторых вопросах указывалось, что это происходит, когда вы не используете ng-repeat, но опять же я ожидаю один объект JSON от бэкэнда.

Любой указатель здесь, чтобы помочь?

ОБНОВЛЕНИЕ: изменение с Restangular на $resource устраняет мою проблему. Хотя хотелось бы знать, почему так происходит. Ответ от людей, имеющих опыт работы с Restangular, будет оценен по достоинству.


person JofryHS    schedule 11.09.2013    source источник


Ответы (1)


Restangular возвращает промис из всех запросов, которые нельзя редактировать.

Вместо этого вы должны назначить фактический результат своей области в соответствии с ответом на этот вопрос - Angular.JS: почему нельзя редактировать входные данные?

person Richard Nichols    schedule 07.10.2013