我正在使用AngularJS和Slim PHP框架为后端构建应用程序,现在我完成了第一个表单并为其创建了一条通往模板的路径。现在我想将数据传递给另一个控制器时出现问题,我需要将数据传递给另一个控制器+视图(模板),我不想污染我的第一个视图,而不是它的控制器,所以我真的想要/需要将数据传递到另一个控制器,该控制器可以处理我的数据和另一种形式(第二种形式用于计算和其他工作)...因此您可以将第一个控制器称为预先保存,而实际数据保存(后端到数据库)只会在第二个Controller +模板中发生。这是我的第一个模板视图的缩写,具有以下形式:
<form novalidate id="formAdd" name="formAdd" class="form-horizontal well col-md-7 col-md-pull-5" method="post">
<fieldset>
<legend>Transaction form</legend>
<div class="form-group">
<label for="symbol" class="col-sm-4 control-label">Symbol</label>
<div class="col-sm-5 symbols">
<input type="text" name="symbol" class="form-control" ng-model="trsn.symbol" placeholder="symbol" required />
</div>
</div>
<div class="form-group">
<label for="accnt_id" class="col-sm-4 control-label">Account</label>
<div class="col-sm-5">
<select id="accnt_id" name="accnt_id" ng-model="trsn.accnt_id" class="form-control" required>
<option value="">...</option>
<option ng-repeat="account in trsn.accounts" value="{{account.accnt_id}}">{{account.accnt_name}}</option>
</select>
</div>
</div>
<!-- ....etc, etc.... -->
<div class="form-actions col-sm-8 col-sm-offset-4">
<button type="submit" name="save_btn" class="btn btn-primary" ng-disabled="formAdd.$invalid" ng-click="preSaveTrsn(trsn, formAdd)">Save transaction</button>
<button type="reset" class="btn btn-default">Cancel</button>
</div>
</fieldset>
</form>
然后该应用程序将包含以下模块并进行路由:
var investingApp = angular.module('investingApp', ['ngSanitize','ngResource', 'ngRoute'])
.config(function($routeProvider, $locationProvider) {
$routeProvider.when('/new-trsn',
{
templateUrl: 'templates/StockTransaction.html',
controller: 'StockTransactionController'
});
$routeProvider.when('/presave-trsn',
{
templateUrl: 'templates/PreSaveTransaction.html',
controller: 'PreSaveTrsnController'
});
});
现在我的第一个控制器中是presave函数,该函数为空,因为我不知道如何处理它,以便可以将事务数据发送到下一个控制器+视图:
investingApp.controller('StockTransactionController',
function TransactionController($scope, $http, $location, $compile, $timeout, transactionDataService, dateFilter) {
// define some default variables
$scope.trsn = {};
$scope.trsn.symbol = "";
...
$scope.preSaveTrsn = function(trsn, formAdd) {
// what to put in here to transfer data to next controller????
};
然后是我的最后一个控制器,因为那里我还没有收到任何数据,所以我那里也什么也没有....但是基本上我要注入的是来自第一个表格/控制器的交易数据(trsn)。
investingApp.controller('PreSaveTrsnController',
function MenuController($scope, $http, trsn) {
console.debug(trsn);
});
我是否必须以routeProvider
某种方式放入一些东西?...还是我必须在preSaveTrsn
第一个控制器中的函数内部填写一些特殊内容???我对此感到非常困惑,因为我发现的所有示例都是立即保存到数据库中,但是我无法以此方式构建我的应用程序,出于某些原因,它实际上必须位于第二个控制器上,而我没有认为我必须在这里解释....谢谢您给予的任何帮助:)
您可以创建轻量级服务-价值
angular.module('investingApp').value('MySharedValue', {});
然后将其注入两个控制器中:
TransactionController($scope, $http, $location, $compile, $timeout, transactionDataService, dateFilter, MySharedValue)
而只是将您的共享价值分配给它
$scope.preSaveTrsn = function(trsn, formAdd) {
MySharedValue.trsn = trsn;
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句