Проблема инициализации переменной $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 в вашем контроллере)

Другие вопросы по тегам