0

在我的项目中,我使用 ngRoute 将 edit.php 视图加载到我的索引 ng-view

我不知道为什么 ngResource 结果没有绑定到我的 ng-model,这是我的代码:

Javascript:

var app = angular.module('smodule', ['ngRoute','ngResource']);

/* Factory */
app.factory('Stocks', function($resource){

    return $resource('<?=$this->module_url;?>/stocks/:stockId', {stockId:'@stock_id'}, {
        query: {method:'GET', isArray:true},
        get: {method:'GET',isArray:true,  params:{stock_id: '@stock_id'}},
        update: {method:'PUT'}
    });
});

/* Router */
app.config(function($routeProvider) {
    $routeProvider
        .when('/stock',{
            templateUrl: 'edit.php',
            controller: 'stockDetailController'
        })
        .when('/stock/:stockId', {
            templateUrl: 'edit.php',
            controller: 'stockDetailController'
        });
});

/*Controller*/
app.controller('stockDetailController', function($scope, Stocks, $routeParams){
    console.log($routeParams.stockId);
    if ($routeParams.stockId){
        /* Update stock data */
        Stocks.get({stockId:$routeParams.stockId}, function(stock){
            $scope.stock = stock;
            console.log(stock); 
        });

    }
});

/* Bootstrap the module as ng-module */
angular.bootstrap(document, ['smodule']);

编辑.php:

<div class="columns medium-8 large-8 ">
    <label>Stock name
       <input type="text" name="stock_name" ng-model="stock.name" />
    </label>
</div>

后端返回以下 json

[
  {
    id: "1",
    name: "My stock name"
  }
]

我使用 chrome 调试器检查是否从 ngResource 返回了任何结果,它显示以下内容:

[Resource, $promise: Object, $resolved: true]
  0: id: "1",
     name: "My stock name"
  $promise: Object
  $resolved: truelength: 1

任何人都可以帮忙吗?谢谢你。

4

2 回答 2

1

感谢@JBNizet 提供结果:

问题是因为我的服务返回一个包含 1 个具有 name 属性的对象的数组。但我使用它就好像它返回了对象本身

只需将工厂更改为:

app.factory('Stocks', function($resource){
return $resource('<?=$this->module_url;?>/stocks/:stockId', {stockId:'@stock_id'}, {
    query: {method:'GET', isArray:true},
    get: {method:'GET', params:{stock_id: '@stock_id'}},
    update: {method:'PUT'}
});

});

并且对于后端 php 返回单个对象结果而不是数组

于 2014-11-20T07:49:31.030 回答
-1

你几乎就在那里,就像这样在 ng-modal 中使用股票。

html

<div class="columns medium-8 large-8 ">
<label>Stock name
   <input type="text" name="stock_name" ng-model="stock" value="stock.name" />
</label>

于 2014-11-20T07:14:10.583 回答