2014-12-06 19 views
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: ''} 

     ]; 

};

回答

0

你的代碼很混亂,因爲它不清楚你實際需要什麼信息。

但無論如何,根據您的帖子的標題。您可以訪問使用

$scope.$parent.varName; 

如果它不是直接父,你不使用$父直屬母公司控制的範圍,你可以依靠的作用域繼承。子範圍應該可以訪問父範圍,除非它被聲明爲隔離範圍。只要注意使用基元而不是用於數據綁定的對象。

偉大的資源將是javascript-prototypal-inheritance

相關問題