无法在我的HTML中使用ng-init初始化$ scope变量

时间:2015-02-26 22:03:15

标签: javascript angularjs angularjs-scope angularjs-ng-init

我正在尝试使用$scope.selectedModelmodel1初始化为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或类似的东西吗?

2 个答案:

答案 0 :(得分:0)

如果可以,最好在您的控制器中初始化selectedModel,而不是使用ng-init初始化HTML:此指令可能具有已执行的行为。

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

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

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

答案 1 :(得分:0)

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

<div ng-repeat="mod in pTab">
        <div ng-repeat="img in mod.galleryImages" ng-if="modelIsActive(mod)">