我正在运行带有角度的Rails 4应用程序。当我运行以下代码时,我得到的错误(在Firefox控制台中) $ resource未定义。
1)$ resource不是全局变量吗?我该如何访问它?
2)如何从html表单的提交事件中的控制器正确调用API端点“/ admin / update_something”?
今天是我学习angularjs的第二天,所以我正在努力学习惯例。
的HTML / HAML:
%section{"ng-app"=>"bctApp", "ng-controller" => "bctCtr"}
%form{:name => "bctForm", "ng-submit" => "bctSubmit($event)"}
%table
%thead
%tr
%th bct ID
%tbody
%tr
%td
%input{:type => "button", :value => "Add bct ID", "ng-click"=>"addbctIdField()"}
%input{:type => "submit", :value => "Save Changes"}
%tr{"ng-repeat" => "bct_id in bct_ids track by $index"}
%td
%input{:type =>"text", :value=>"{{ bct_id }}" }
%input{:type =>"button", :value=>"Remove", "ng-click"=>"removebctIdField($index)"}
angularjs控制器:
function Admin($resource) {
return $resource('/admin/update_something',
{ },
{ update_list: {
method: "POST",
isArray: true
}
}
);
}
function bctCtr($scope) {
$scope.bct_ids = gon.bct_ids;
$scope.addbctIdField = function() {
$scope.bct_ids.unshift($scope.bct_id_val);
}
$scope.removebctIdField = function(index) {
$scope.bct_ids.splice(index, 1);
}
$scope.bctSubmit = function() {
var bctUpdate = new Admin();
bctUpdate.update_list({}, $scope.bct_ids);
}
}
var bctApp = angular.module('bctApp', ['ngResource']);
bctApp.controller('bctCtr', bctCtr);
bctApp.factory('Admin', ['$resource', Admin]);
})(angular);
答案 0 :(得分:0)
除了$ scope之外,将Admin作为控制器声明中的参数传递。 然后当你使用它时,你可以直接调用Admin.update ...你不必使用新的Admin()(并且不应该使用IMO)。 别忘了把它注入下面。
问题是你正在使用Admin而不是要求角度因此无法注入资源。
答案 1 :(得分:-1)
请检查您是否已将ngResource模块作为依赖项注入您的应用程序,即
var app=angular.module("myApp", ["ngResource"]);
答案 2 :(得分:-1)
我不确定您收到$resource is not defined
错误的原因。我创造了一个plunkr,它的工作原理!
你能让我知道它说的代码行吗?
这是工作Plnkr
function Admin($resource) {
return $resource('/admin/update_something',
{ },
{ update_list:
{
method: "POST",
isArray: true
}
}
);
}
function bctCtr($scope, Admin) {
console.log(Admin)
}
var bctApp = angular.module('bctApp', ['ngResource']);
bctApp.controller('bctCtr', bctCtr);
bctApp.factory('Admin', ['$resource', Admin]);