函数执行无效。

实现点击按钮改变按钮的类名的功能,最后是可以实现的,我想让他最开始默认是第一个,但是并不能成功,这是什么原因呢?

angular.module('app').directive('appPositionClass',[function () {
    return{
        restrict:'A',
        replace:true,
        scope:{
            com:'='
        },
        templateUrl:'view/template/positionClass.html',
        link:function ($scope)
        {
            $scope.showPositionList=function (idx) {
                $scope.positionList=$scope.com.positionClass[idx].positionList;
                $scope.isActive=idx;
            };
            $scope.showPositionList(0);
        }
    };
}]);

控制台报错如下:
图片描述

阅读 2.2k
1 个回答

directive初始化的时候$scope.com还是undefined,由于$scope.com是由外部

scope:{
    com:'='
}

赋值的,所以你无法保证什么时候有值,比较稳妥的做法可以是加个watch

link:function ($scope)
{
    $scope.showPositionList=function (idx) {
        $scope.positionList=$scope.com.positionClass[idx].positionList;
        $scope.isActive=idx;
    };
    var isInit = true;
    $scope.$watch('com',function(newValue,oldValue, scope){
        if(newValue && isInit){
            isInit = false;
            $scope.showPositionList(0);
        }
    })
    
    
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题