AngularJS + Restangular - 调用.one()和.get()导致数组?

时间:2013-09-11 01:27:30

标签: javascript rest angularjs restangular

我正在使用Angular 1.0.8以及Restangular。由于我刚刚开始使用js框架,因此非常感谢新手友好的解释。

我有一个非常简单的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经验的人的回答。

1 个答案:

答案 0 :(得分:1)

Restangular返回所有无法编辑的查询的承诺。

相反,您应该根据此问题的答案将实际结果分配到您的范围 - Angular.JS: why can't the inputs be edited?