Angularjs ng-model 在将参数传递给控制器中的函数时返回未定义



我在 struts2 文本字段中使用ng-model,并尝试将值传递给 angularjs 控制器中的函数。它返回未定义的值。怎么了?

在下面的代码中,我试图将ng-model="orderDetail.idProduct"值传递给我的$scope.idProductNgBlur函数。函数始终发现该值未定义。ng-repeat是否会导致此错误?

下面是函数

$scope.idProductNgBlur = function (){
console.log("The $scope.orderDetail.idProduct : " + $scope.orderDetail.idProduct);
}

在 HTML 中,我有这个:

<div class="row" ng-repeat="orderDetail in orderDetails">
<!-- <s:submit cssClass="btn btn-primary" ng-click="removeNewOrderDetail('{{orderDetail.id}}')" value="Remove Order Detail" /> -->
<div class="col-md-3">
<s:textfield type="text" ng-if="orderDetail.idOrderDetail" ng-model="orderDetail.idOrderDetail" name="orderDetails[{{$index}}].idOrderDetail" id="orderDetails[{{$index}}].idOrderDetail" placeholder="Id Order Detail" value="{{orderDetail.idOrderDetail}}" /></div>
<div class="col-md-3">
<s:textfield type="text" ng-if="orderDetail.idOrderDetail" ng-model="orderDetail.idProduct" name="orderDetails[{{$index}}].idProduct" id="orderDetails[{{$index}}].idProduct" placeholder="Id Product" value="{{orderDetail.idProduct}}" ng-blur="idProductNgBlur()"/></div> 
<div class="col-md-2">
<s:textfield type="text" ng-if="orderDetail.idOrderDetail" ng-model="orderDetail.amount" name="orderDetails[{{$index}}].amount" id="orderDetails[{{$index}}].amount" placeholder="Amount" value="{{orderDetail.amount}}" /></div>
<div class="col-md-2">
<s:textfield type="text" ng-if="orderDetail.idOrderDetail" ng-model="orderDetail.unitPrice" name="orderDetails[{{$index}}].unitPrice" id="orderDetails[{{$index}}].unitPrice" placeholder="Unit Price" value="{{orderDetail.unitPrice}}" /></div>
<div class="col-md-2">
<s:textfield type="text" ng-if="orderDetail.idOrderDetail" ng-model="orderDetail.subTotal" name="orderDetails[{{$index}}].subTotal" id="orderDetails[{{$index}}].subTotal" placeholder="Sub Total" value="{{orderDetail.subTotal}}" /></div>
</div>

你不是在传递它,而是在调用它。

传递将是这样的:

$scope.idProductNgBlur = function (id){
console.log("The $scope.orderDetail.idProduct : " + id);
}

在HTML中,在你调用ng-blur pass的行中,你的orderDetail.idProduct:

<s:textfield type="text" ng-if="orderDetail.idOrderDetail" ng-model="orderDetail.idProduct" name="orderDetails[{{$index}}].idProduct" id="orderDetails[{{$index}}].idProduct" placeholder="Id Product" value="{{orderDetail.idProduct}}" ng-blur="idProductNgBlur(orderDetail.idProduct)"/></div>

最新更新