Angular JS:ng-click 范围集在 ng-if 中不起作用

2024-03-26

今天,我看到了 angularjs 中的一个错误:

当您尝试直接在 ng-click 中设置范围值时,当您的 ng-click 位于测试相同范围值的 ng-if 中时,它不起作用 ->http://jsfiddle.net/9j2TL/26/ http://jsfiddle.net/9j2TL/26/

angular.module('test', [])
.controller('testCtrl', function($scope) {
    $scope.step = 1;

    $scope.setStep = function(step) {
         $scope.step = step;  
    };
});

<div ng-app="test">
<div ng-controller="testCtrl">
    <ul class="timeline">
        <li>
            <div class="block-submit">
                <button class="btn btn-primary btn-lg" ng-click="step = 2">Without ngif block</button>
            </div>
        </li>

        <li ng-if="step > 1">
            <div class="block-submit">
                <button class="btn btn-primary btn-lg" ng-click="step = 3">with ngif block</button>
            </div>
        </li>

        <li ng-if="step > 1">
            <div class="block-submit">
                <button class="btn btn-primary btn-lg" ng-click="setStep(3)">With ngif block and scope function</button>
            </div>
        </li>
    </ul>
    <p>
        step value : {{ step }}
    </p>
</div>
</div>

要解决这个问题,您应该创建一个作用域函数......

如果有人对这个问题有解释,我很乐意理解!

thx :)


我不认为这是一个错误。您只是在视图中自动创建属性和混淆范围。

更新了 Fiddler http://jsfiddle.net/MM86t/.

这确实有效:

<li ng-if="step > 1">
    <div class="block-submit">
        <button class="btn btn-primary btn-lg" ng-click="$parent.step = 3">with ngif block</button>
    </div>
</li>

发生这种情况是因为self里面的ng-if正在创建一个新的范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular JS:ng-click 范围集在 ng-if 中不起作用 的相关文章

随机推荐