Jquery 如何在指令的控制器内使用$scope变量生成过滤器
我发现了很多用angular JS编写代码的约定。我使用以下约定Jquery 如何在指令的控制器内使用$scope变量生成过滤器,jquery,angularjs,angularjs-directive,angularjs-scope,Jquery,Angularjs,Angularjs Directive,Angularjs Scope,我发现了很多用angular JS编写代码的约定。我使用以下约定 app.directive("employeeList" , function(){ return { restrict : 'E' , templateUrl: 'employee-list.html', controller:function($scope , $filter) { $scope.emp_positions = p
app.directive("employeeList" , function(){
return {
restrict : 'E' ,
templateUrl: 'employee-list.html',
controller:function($scope , $filter)
{
$scope.emp_positions = positions_json; // my FIREST array
$scope.emp_users_json = users_json; // My SECOND Array
//My Code Logic //
// I WANT TO MAKE FILTER HERE WHICH CAN USE $SCOPE VARIABLE.
IS THERE ANY WAY TO MAKE FILTER HERE LIKE
$SCOPE.FILTER('FLITER_NAME' , FUNCTION($SCOPE)){....} ???
IS IT POSSIBLE? IF NOT WHAT COULD BE OTHER POSSIBLE WAY.
//
},
controllerAs: 'emp'
};
});
现在我想写一个自定义过滤器来过滤我的数据,它现在在“$scope”变量中。
1) 我可以在使用$scope变量的控制器中编写自定义过滤器吗。如果是,请给我举个例子。
如果没有,那么我还能做些什么来将$scope变量传递给指令之外的自定义变量呢
我已经添加了我的plunker,请阅读表“POSITION HERE”,并阅读我的script.js文件。对于数据,我添加了data.js文件更新: 关于在筛选器中使用$scope 1) 您可以将范围变量作为函数参数从指令传递到过滤器,并从
args
对象访问它们:
app.directive("employeeList" , function(){
return {
restrict : 'E' ,
templateUrl: 'employee-list.html',
controller:function($scope)
{
$scope.emp_positions = positions_json;
$scope.emp_users_json = users_json;
//your another code here
},
controllerAs: 'emp'
};
});
您的employee list.html
<div ng-repeat="employee in employees | employeeFilter: [emp_positions, emp_users_json]">
.....
</div>
2) 您可以通过传递this
将整个$scope传递给过滤器
此
将参考当前范围
<div ng-repeat="employee in employees | employeeFilter: this">
.....
</div>
但我建议选择第一个选项,只传递范围变量,而不是整个$scope
我已经更新了你的装备
请参阅:。更新: 关于在筛选器中使用$scope 1) 您可以将范围变量作为函数参数从指令传递到过滤器,并从
args
对象访问它们:
app.directive("employeeList" , function(){
return {
restrict : 'E' ,
templateUrl: 'employee-list.html',
controller:function($scope)
{
$scope.emp_positions = positions_json;
$scope.emp_users_json = users_json;
//your another code here
},
controllerAs: 'emp'
};
});
您的employee list.html
<div ng-repeat="employee in employees | employeeFilter: [emp_positions, emp_users_json]">
.....
</div>
2) 您可以通过传递this
将整个$scope传递给过滤器
此
将参考当前范围
<div ng-repeat="employee in employees | employeeFilter: this">
.....
</div>
但我建议选择第一个选项,只传递范围变量,而不是整个$scope
我已经更新了你的装备
请参阅:
我可以在使用$scope变量的控制器中编写自定义过滤器吗
是的,您可以通过在用户列表中写入.filter()
JS
员工列表中的HTML
将其放入函数foo()
,并启动一些观察程序,在任何更改时调用foo()
在本例中为HTML:
我可以在使用$scope变量的控制器中编写自定义过滤器吗
是的,您可以通过在用户列表中写入.filter()
JS
员工列表中的HTML
将其放入函数foo()
,并启动一些观察程序,在任何更改时调用foo()
在本例中,HTML:
如何在该文件中使用$scope变量filter@ShivekParmar,您可以在来自args对象的筛选器中使用$scope.variables。请参阅我的更新。但我必须在范围变量中使用不同的数组。我想在第一个文件中显示查找记录,在第二个文件中显示相同的记录,并使用不同的键。但根据您的解决方案,如果我使用app.filter()删除该指令,那么它将无法访问完整的$scope varible。因为它在控制器的外面。作为记录,我也不喜欢你的第二种解决方案。我试图使用{{employee in employees | employeeFilter:(empid)}但由于包含empid的其他数组只能由作用域访问。我更新了我的问题以获得更多澄清。@ShivekParmar,你能用你的示例创建JSFIDLE或PLUNK吗?因为我不太清楚你想要什么。如何在这个数组中使用$scope变量filter@ShivekParmar,您可以在args o的筛选器中使用$scope.variables对象。请参阅我的更新。但是我必须在我的范围变量中使用不同的数组。我希望在第一个数组中显示find记录,并在第二个数组中使用不同的键显示相同的记录。但是,如果我使用app.filter()如果退出该指令,那么它将无法访问完整的$scope varible。因为它位于控制器的外侧。并且作为记录,我也不喜欢您的第二种解决方案。我尝试使用{{employee in employeeFilter:(empid)“}},但因为包含empid的其他数组只能由scope访问。我已经更新了我的问题以获得更多的澄清。@ShivekParmar,您能用您的示例创建JSFIDLE或PLUNK吗?因为我不太清楚你想要什么。
<tr ng-repeat="empdata in getUsers()">
$scope.filteredUserList = angular.copy($scope.emp_users_json.users)
.filter(function(item)
{
var itemDoesMatch = true;
// write logic here to filter your stuff
return itemDoesMatch;
});