我是angularjs和rails的新手,我正在尝试将rails控制器中的json数据发送到angularjs控制器,如下所示:
class ProductsController < ApplicationController
def index
@prods= Product.all.to_json()
end
end
application.html.erb:
<!DOCTYPE html>
<html ng-app="ProductApp">
<head>
<title>Angular2</title>
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag 'application' %>
<%= csrf_meta_tags %>
</head>
<body ng-controller="productsCtrl">
<%= yield %>
</body>
</html>
产品/ index.html.erb
<ul ng-repeat= "p in products" >
<li>{{p.name}}</li>
</ul>
productsCtrl.js
angular.module("ProductApp", ["ngResource"])
.controller("productsCtrl", function ($scope, $resource){
prod = $resource("/products/:id", {id: "@id"}, {update: {method: "PUT"}});
$scope.products= prod.query();
});
答案 0 :(得分:0)
试试这个
app.factory('api', ['$resource', function($resource) {
return $resource('', {},
{
products: {
url: '/products/:id',
method: 'POST'
}
}]);
angular.module("ProductApp", ["ngResource"])
.controller("productsCtrl", function ($scope, $resource, api){
api.products({id: {id: "@id"}}, function(result) {
$scope.products= result;
}, function(error) {
});
$scope.products= prod.query();
});
编辑:
angular.factory('api', ['$resource', function($resource) {
return $resource('', {},
{
products: {
url: '/products/:id',
method: 'POST'
}})
}]);
angular.module("ProductApp", ["ngResource"])
.controller("productsCtrl", function ($scope, $resource, api){
api.products({id: {id: "@id"}}, function(result) {
$scope.products= result;
}, function(error) {
});
$scope.products= prod.query();
});
但仍有一些错误:
Uncaught TypeError: undefined is not a functionproductsCtrl.js?body=1:2 (anonymous function)
angular.js?body=1:9998 Error: [ng:areq] Argument 'productsCtrl' is not a function, got undefined