2013-11-20 38 views
0

我有一个使用资源创建并使用API​​Rest列出的代码,我需要将模板中的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

我发现你的代码存在一个主要问题。你已经声明模型不是直接在控制器内部,而是在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 
     } 
}]); 
相关问题