2016-10-29 40 views
0

我正在使用Angular動態構建複選框。我根據許多條件設置了ng檢查值。在AngularJS中ng-checked = true時頁面加載調用函數

該複選框在頁面加載時被適當選中。當ng-checked = true時,我需要在頁面加載時調用makeAddressDefault()函數(當前在ng-click中使用)。

<input type="checkbox" 
    id="defaultAddress{{$id}}" 
    ng-model="addressChecked" 
    name="defaultAddress" 
    ng-click="makeAddressDefault(add, $event)" 
    ng-checked="addresses.length === 1 || add.IsDefault() || isSelected(add.id)"> 
<label ng-init="isAddressDefault(addresses, add)" for="defaultAddress{{$id}}"> 
    {{add.FirstName}} {{add.LastName}}<br /> 
    {{add.Address1}}<br /> 
    {{add.City}}, {{add.State}} {{add.ZIP}} 
</label> 

什麼是最好的處理方法?謝謝!

+0

爲什麼不檢查控制器的狀態? – Aer0

+0

@ Aer0如何?我試着在ng-change上調用我的函數,但是當複選框的初始檢查發生時,在頁面加載時不調用ng-change。 –

+0

也許這不是迄今爲止最好的解決方案,但是您可以簡單地將您的'ng-checked'條件傳遞給控制器​​中的if條件。只要檢查它是否真實並打電話給你想要的功能。這肯定會要求您的控制器在加載時可以訪問所有變量。 – Aer0

回答

1

在你的控制你爲什麼不這樣做

$scope.init = function(){ 
    angular.forEach(addresses, function(add){ 
    if(addresses.length === 1 || add.IsDefault() || isSelected(add.id)){ 
     makeAddressDefault(add) 
    } 
    }) 
} 

$scope.init() 

一旦控制器已經被初始化它會自動調用init函數。

+0

我怎麼知道複選框被選中? –

+0

你可以做類似的邏輯,你如何檢查你的html中地址的'checkedness'lol。看到我的修訂 –

+0

有趣的是,我喜歡它。我會嘗試一下。謝謝! –

相關問題