我有一个使用资源创建和使用APIRest列表的代码,我需要将模板中的Id传递给控制器,从控制器传递给服务。
这是我的代码:
Template.html
<div class="industrialists" ng-app="cliConsApp">
<ul class="table" ng-controller="industrialistCtrl" ng-init="init('{{ constructionPrivateInformationId }}')">
<form name="myForm">
<input type="text" id="userName" ng-model="industrialist.user" placeholder="User name"/>
<input type="text" id="jobName" ng-model="industrialist.job" placeholder="Job name"/>
<a ng-click="createNewUser()" class="btn btn-small btn-primary">create new user</a>
</form>
<li ng-repeat="industrial in industrialists">
[[industrial.job.name]]
</li>
</ul>
</div>
app.js
var cliConsApp = angular.module('cliConsApp',['uTrans', 'cliConsApp.controllers', 'cliConsApp.services' ]).
config(function($interpolateProvider){
$interpolateProvider.startSymbol('[[').endSymbol(']]');
}
);;
services.js
var services = angular.module('cliConsApp.services', ['ngResource']);
services.factory('IndustrialistsFactory', function ($resource) {
return $resource(
'/app_dev.php/api/v1/constructionprivateinformations/:id/industrialists',
{id: '@id'},
{
query: { method: 'GET', isArray: true },
create: { method: 'POST'}
}
)
});
controllers.js
var app = angular.module('cliConsApp.controllers', []);
app.controller('industrialistCtrl', ['$scope', 'IndustrialistsFactory',
function ($scope, IndustrialistsFactory) {
$scope.init = function (id) {
$scope.id=id;
$scope.industrialists= IndustrialistsFactory.query({},{id: $scope.id});
$scope.createNewUser = function (id) {
IndustrialistsFactory.create($scope.industrialist, {id: $scope.id});
$scope.industrialists = IndustrialistsFactory.query({id: $scope.id});
}
}
}]);
我在CreateNewUser中遇到问题,因为服务没有重新识别id和url不正确。
我怎么做?
答案 0 :(得分:0)
我发现您的代码存在重大问题。您已声明模型不是直接在控制器内部,而是在init函数内部。这限制了它们的范围并打破了像ng-click="createNewUser()"
这样的表达式。将它们移出:
app.controller('industrialistCtrl', ['$scope', 'IndustrialistsFactory',
function ($scope, IndustrialistsFactory) {
$scope.id = "";
$scope.industrialists = [];
$scope.createNewUser = function (id) {
// update the models here
}
$scope.init = function (id) {
// update the models here
}
}]);