0
我被困在一個應用程序中,其中有一個表包含用於輸入expense_id值和金額的輸入字段。數量元素被綁定到一個自定義指令,通過按Ctrl + Enter將添加一個新的tr包含空的fields.Now提交時,我無法計算所有數量字段的總金額。這裏是標記如何在angularjs中將父級控制器中的子控制器設置爲模型
<table class="table table-bordered table-hover table-condensed">
<tr class="info" style="font-weight: bold">
<td>EXPENCE TYPE</td>
<td>AMT</td>
</tr>
<tr ng-repeat="expense in expenceentry">
<td>
<!-- editable username (text with validation) --> <span
editable-text="expense.expensetype_id"
ng-model="expense.expensetype_id"
e-name="expense.expensetype_id" e-form="expenceentryform"
e-required
e-typeahead="expense.expensetype_id as expense.expensetype_name for expense in expensetypes.record">
</span>
</td>
<td ng-controller="MyCtrl">
<input type="number" ng-model="expense.amount" on-keyup-fn="handleKeypress">
</td>
</tr>
</table>
和控制器,用於MyCtrl是:
function MyCtrl($scope) {
$scope.keylog = [];
$scope.keyCount= 0;
var len;
//$scope.expense.amount="100";
// $scope.$parent.test=$scope.expense.amount;
$scope.handleKeypress = function(key) {
$scope.keylog.push(key);
if($scope.keylog[len-1]==17 && $scope.keylog[len]==13)
$scope.addUser();
len=$scope.keylog.length;
}
}
自定義指令是
app.directive('onKeyup', function() {
return function(scope, elm, attrs) {
function applyKeyup() {
scope.$apply(attrs.onKeyup);
};
var allowedKeys = scope.$eval(attrs.keys);
elm.bind('keyup', function(evt) {
//if no key restriction specified, always fire
if (!allowedKeys || allowedKeys.length == 0) {
applyKeyup();
} else {
angular.forEach(allowedKeys, function(key) {
if (key == evt.which) {
applyKeyup();
}
});
}
});
};
});此
父控制器是:
function expenseEntry($scope, $filter, $http,expense_type,expenseinsert,employee) {
$scope.total="0.00";
$scope.deliveryboys =employee.get();
$scope.update=function(){
// $scope.action="Add";
var ret=expenseinsert.save($scope.expense);
alert("Data inserted..!!!");
};
$scope.expensetypes=expense_type.get();
$scope.addUser = function() {
$scope.inserted = {
expensetype_id:'',
amount: null
};
$scope.expenceentry.push($scope.inserted);
};
$scope.expenceentry = [
{expensetype_id: '', amount: ''}
];
};