2013-09-24 79 views
0
更新ngModel

我有填充客戶列表的ngRepeat,如下所示:問題間接ngClick

<div ng-repeat="terr in terrData.data"> 
    <div class="customer-row" ng-click="clickCustomerSelect(terr)"> 
     <input class="customer-radio" type="radio" name="customer-select" ng-model="selectedCustomerRow" value="{{terr.customerID}}"> 
     <div class="contact-data-column">{{terr.custNm}}</div> 
     <div class="primaryphone-data-column">{{terr.primaryPhone}}</div> 
     <!-- other customer data --> 
    </div> 
</div> 

有對客戶行格說,如果該行被點擊,點擊事件應該檢查該行的單選按鈕。

這裏顯示的基本控制器邏輯:

$scope.clickCustomerSelect = function(customer){ 
    $scope.selectedCustomerRow = customer.customerID.toString(); 
    //Other business logic 
}; 

我看到,每當被點擊客戶行(不是單選按鈕),該模型被正確地更新,並且與該值對應的單選按鈕被選中。請注意,這是預期的功能。

我看到的問題是,如果您手動檢查單選按鈕(即不單擊該行),該模型將不再響應點擊該行的更新。

我想知道,如果不知何故,一旦你選擇單選按鈕,你會超出角度範圍?

編輯:樣品模型

terrData.data = [{ 
    "customerID": 1, 
    "companyName": "Name 1", 
    "custNm": "Blank", 
    "primaryPhone": "111-111-1111" 
}, { 
    "customerID": 2, 
    "companyName": "Name 2", 
    "custNm": "Blank", 
    "primaryPhone": "111-111-1112" 
}, { 
    "customerID": 3, 
    "companyName": "Name 3", 
    "primaryPhone": "111-111-1113" 
}]; 
+1

請在控制器中添加您的terrData模型 –

回答

2
$scope.selectedCustomerRow = customer.customerID.toString(); 

替換爲:

$scope.selectedCustomerRow = customer.customerID; 

的onclick將其設置selectedCustomerRow。

在HTML

<input class="customer-radio" type="radio" name="customer-select" ng-model="selectedCustomerRow" value="{{terr.customerID}}"> 

替換爲:

<input class="customer-radio" type="radio" name="customer-select" ng-model="$parent.selectedCustomerRow" value="{{terr.customerID}}"> 

DEMO

+0

此演示完美地顯示了該問題。選擇單選按鈕,然後嘗試再次通過點擊功能選擇行。單選按鈕將停止選擇。 –

+0

其工作完美。 –

+0

單擊A的單選按鈕,然後單擊B的文本,然後單擊A的文本。單選按鈕將不再從A文本中選擇。 –