Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何获取ng click指令上的col值并与scope.info绑定_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 如何获取ng click指令上的col值并与scope.info绑定

Angularjs 如何获取ng click指令上的col值并与scope.info绑定,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我想用scope.info.colname.绑定col属性值。。当我声明作用域时,orderBy()方法不起作用。当我没有声明作用域所有方法都在工作,但我无法获取col值时,请更新:啊,现在我看到了您试图实现的目标!如果只使用一次指令,您的方法可能会起作用,但由于您多次使用该指令,您最终会覆盖指令属性和$scope变量 您可以通过使用子作用域来解决这个问题,即:不要与父作用域混合,而是将变量和方法保存在指令的内部或每个实例的“本地” 下面是使用子作用域的指令重构版本,它只更新子作用域的$pare

我想用scope.info.colname.绑定col属性值。。当我声明作用域时,orderBy()方法不起作用。当我没有声明作用域所有方法都在工作,但我无法获取col值时,请更新:啊,现在我看到了您试图实现的目标!如果只使用一次指令,您的方法可能会起作用,但由于您多次使用该指令,您最终会覆盖指令属性和
$scope
变量

您可以通过使用子作用域来解决这个问题,即:不要与父作用域混合,而是将变量和方法保存在指令的内部或每个实例的“本地”

下面是使用子作用域的指令重构版本,它只更新子作用域的
$parent
info
,这是您的主
$scope

.directive(“gridSort”,function()){
返回{
模板:
‘xx’+
‘xx’
,
范围:{
col:“@”,
变量:'@',
},
控制器:功能($scope){
$scope.info={
colName:$scope.col
}
$scope.SetSortValue=函数(){
如果($scope.Direction==-1){
$scope.info.CurrentPage=0;
$scope.info.Direction='Asc';
}else if($scope.Direction==1){
$scope.info.Direction='Desc';
$scope.info.CurrentPage=1000;
}
$scope.$parent.info=$scope.info;
}
},
链接:函数(范围、元素、属性){
//任何附加处理
}
};
});
  • 只需向指令添加
    scope:{}
    literal即可声明子作用域
  • 模板中的所有引用现在都指向此子范围
  • controller:function($scope{}
  • 通过
    $scope.$parent

  • 演示->

    当我同时使用这两种方法时,它总是为这两种方法返回相同的col值“Mobile”tag@anilsinghbutola,好的,您希望多次使用该指令会发生很大变化:)请参阅更新。
    <grid-sort col="lMember_id" variable="lMember_id"></grid-sort>
    
    app.directive("gridSort", function () {
        return {
            template:
              '<button  ng-click="Direction=-1;SetSortValue();orderBy();" ng-init="info.CurrentPage=0"><i class="fa-angle-double-up fa"></i></button>' +
              '<button  ng-click="Direction=1; SetSortValue();orderBy();" ng-init="info.CurrentPage=1000"><i class="fa-angle-double-down fa"></i></button>'
            ,
            link: function (scope, element, attrs) {
                scope.SetSortValue = function () {   
                    if (scope.Direction == -1) {
                        scope.info.CurrentPage = 0;
                        scope.info.Direction = 'Asc';
    
                    }
                    else if (scope.Direction == 1) {
                        scope.info.Direction = 'Desc';
                        scope.info.CurrentPage = 1000;
    
                    }
                }
            }
        };
    });
    
    $scope.orderBy = function () {
       var data = $scope.info;
       Request.GetTabledata("SelectMemberData", data, $scope, true);
    };