Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – Angular:从视图中调用函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我有一个问题:

在我看来,我调用一个函数prepareDynamicData(itemMenu);

<div ng-repeat="itemMenu in menuDetailsData.categories" class="headDetails fontH2">
            <div style="display: none">{{prepareDynamicData(itemMenu)}}</div>
            <a href="#" ng-show="dynamicData.expand">{{itemMenu.name}}</a>
            <div ng-repeat="cat in dynamicData.data">
                <p>{{cat.name}}</p>
                <div class="articles">
                    <div ng-repeat="art in cat.items" class="article">
                        <div class="price">
                            <div></div>
                            <span><i>₪</i>{{art.price}}</span>
                        </div>
                        <div class="artDescr">
                            <span class="fontTitle">{{art.title}}</span>
                            <p class="fontDetails">{{art.description}}</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>

我知道顶循环只重复2次(验证),但函数prepareDynamicData(itemMenu)调用4次,不知道为什么!?这是我的控制器:

function MenuItemCtrl($scope,$routeParams,$http,$location,sharedData) {
if (sharedData.getMenuDetails() == null) {
    $location.path('/menu');
    return;
}
else {
    $scope.menu = sharedData.getMenu();
    $scope.menuDetailsData = sharedData.getMenuDetailsData($routeParams.itemId);
}

$scope.dynamicData = {
    data : new Array(),expand : false
};

$scope.prepareDynamicData = function (itemMenu) {
    if (itemMenu.items != null) {
        $scope.dynamicData.data[0] = itemMenu;
        $scope.dynamicData.expand = false;
    }
    else {
        $scope.dynamicData.data = itemMenu.categories;
        $scope.dynamicData.expand = true;
    }
}

}

你能帮我澄清一下它为什么会发生!谢谢

AngularJS使用脏跟踪来确保视图保持最新.这意味着AngularJS将评估视图绑定的值,直到它们稳定为止;因此,每当绑定的相关范围更新时,它将每个绑定至少执行两次. (例如,如果循环内部的特定项目发生更改,则可能会再运行两次.)这就是为什么必须注意确保视图中绑定的函数没有副作用并快速运行.

通常,将数据准备任务移动到控制器加载时运行的代码或者从控制器调用的服务中是一种很好的做法 – 查看相关代码应该很少有副作用!但是,如果您必须/确实想要从视图中调用此类函数,只需跟踪是否已为该给定项调用函数.

这里有点additional reading on dirty tracking in Angular if you’re interested.

大佬总结

以上是大佬教程为你收集整理的angularjs – Angular:从视图中调用函数全部内容,希望文章能够帮你解决angularjs – Angular:从视图中调用函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: