0

我正在尝试初始化$scope.selectedModelmodel1with 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>

这是使用 selectedModel 的 modelIsActive 方法:

$scope.modelIsActive = function (tab) {
            return tab.model== $scope.selectedModel;
}

最终我会想要使用ng-init="selectedModel= mod.model",但是当它不起作用时,我替换了简单的字符串'model1',发现它仍然没有初始化selectedModel到那个字符串。

如何使用 ng-init 进行设置$scope.selectedModel?还是我应该使用其他东西?我需要使用$watch或类似的东西吗?

4

2 回答 2

0

请将您的 ng-if 放入重复的内部:

<div ng-repeat="mod in pTab">
        <div ng-repeat="img in mod.galleryImages" ng-if="modelIsActive(mod)">
于 2015-02-27T11:09:30.160 回答
0

如果可以的话,最好selectedModel在你的控制器中初始化你的,而不是在 HTML 中使用ng-init:这个指令可以有预期的行为。

如果你真的需要,你至少需要$scope.selectedModel在你的控制器中定义,然后在 ng-init 中设置一个值,或者使用一个对象而不是直接使用一个值,例如

<div ng-init="model.selectedModel = 'model11'">

(但您仍然需要$scope.model在控制器中进行初始化)

于 2015-02-26T22:08:16.763 回答