【问题标题】:Not able to fetch value of isolated scope无法获取隔离范围的值
【发布时间】:2018-03-23 00:17:17
【问题描述】:

无法获取隔离范围“检查”的值。出于测试目的,我将索引值传递给“检查”。当 ng-repeat 完成时,我必须添加动画,但是“scope.$last”也给出了未定义的值。我不会发现我的代码语法或逻辑有什么问题。

angular.module('myApp',[])
.directive('track',function(){
    return{
        restrict:'E',
        scope: { check : "="},
        template:`<div class="routeTable"><table class="table" id="road">
                     <tr ng-repeat="level in levels">
                         <td  ng-repeat="lane in lanes"  check = {{$index}}></td>
                      </tr>
                   </table></div>`,
        controller: function($scope){
            $scope.levels = [1,2];
            $scope.lanes= [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
        },
        link: function(scope,elem,attr){
            console.log(scope.$last);
            console.log(attr.check);
        }
    }
})
.routeTable table tr td{
    border: 1px solid  #000000 !important;
    height:30px;
    background-color:#CACDD0;
    width:30px;
}
.routeTable{
    padding:10px;
    width:500px;
}
<!doctype html>
<html ng-app="myApp">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <track></track>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>
    <script src="track.js"></script>
</body>

</html>

【问题讨论】:

    标签: javascript angularjs angularjs-directive custom-directive


    【解决方案1】:

    我想你误解了什么。 scope 变量传递仅适用于指令的同一标记。在下面的示例中,我定义了一个新指令d1check 属性将正确传递给它。

    angular.module('myApp',[])
    .directive('track',function(){
        return{
            restrict:'E',
            
            template:`<div class="routeTable"><table class="table" id="road">
                         <tr ng-repeat="level in levels">
                             <td  ng-repeat="lane in lanes" d1 check = "$index"></td>
                          </tr>
                       </table></div>`,
            controller: function($scope){
                $scope.levels = [1,2];
                $scope.lanes= [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
            }
        }
    })
    
    .directive('d1', function(){
        return {
            scope: { check : "="},
            link: function(scope,elem,attr){
                console.log(scope.check);
            }
        }
    })
    .routeTable table tr td{
        border: 1px solid  #000000 !important;
        height:30px;
        background-color:#CACDD0;
        width:30px;
    }
    .routeTable{
        padding:10px;
        width:500px;
    }
    <!doctype html>
    <html ng-app="myApp">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <link rel="stylesheet" href="style.css">
    </head>
    
    <body>
        <track></track>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>
        <script src="track.js"></script>
    </body>
    
    </html>

    【讨论】:

    • 谢谢 .. 还有一个问题:制定新指令是获得“检查”值的唯一方法?
    • 不,但我不确定您的用例,因此无法提供建议。您当前的示例只是使用 $index,无论如何您都可以通过遍历数组本身来获得它,因此创建指令来获取值非常简单。
    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多