Проблема инициализации переменной $scope с помощью ng-init в моем HTML
Я пытаюсь инициализировать $scope.selectedModel
в model1
с ng-init
, Однако следующий HTML-код не может это сделать:
<div class="productImage">
<div class="imageGallery" ng-init="selectedModel='model1'">
<div ng-repeat="mod in pTab" ng-if="modelIsActive(mod)">
<div ng-repeat="img in mod.galleryImages">
<img class="overviewProductImage" ng-src="{{img.image}}" ng-if="productImageIsActive(img, $index)"/>
</div>
</div>
</div>
</div>
А вот метод modelIsActive, который использует selectedModel:
$scope.modelIsActive = function (tab) {
return tab.model== $scope.selectedModel;
}
В конце концов я захочу использовать ng-init="selectedModel= mod.model"
но когда это не сработало, я заменил простую строку 'model1'
и обнаружил, что до сих пор не инициализируется selectedModel
к этой строке.
Как я могу использовать ng-init для установки $scope.selectedModel
? Или я должен использовать что-то еще? Нужно ли использовать $watch
или что-то подобное?
2 ответа
Пожалуйста, поместите ваш ng-if во внутреннюю часть повтора:
<div ng-repeat="mod in pTab">
<div ng-repeat="img in mod.galleryImages" ng-if="modelIsActive(mod)">
Если вы можете, лучше инициализировать ваш selectedModel
в вашем контроллере, а не в HTML с помощью ng-init
: эта директива может иметь ожидаемое поведение.
Если вам действительно нужно, вы должны хотя бы определить $scope.selectedModel
в вашем контроллере и затем установите значение в ng-init, или используйте объект вместо непосредственно значения, такого как
<div ng-init="model.selectedModel = 'model11'">
(но вам все равно нужно будет инициализировать $scope.model
в вашем контроллере)