Для этого я использую 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, будет оценен по достоинству.