AngularJS ng-repeat combined with ng-click=orderByField
AngularJS ng-repeat combined with ng-click=orderByField
AngularJS
$scope.orderByField = 'firstName';
$scope.reverseSort = false;
$scope.headers = ['First Name':'firstName','Last Name':'lastName']
查看
<th
ng-repeat="(key,value) in headers"
ng-click="orderByField=value; reverseSort = !reverseSort">
{{ key }}
<span ng-show="orderByField == value">
<span ng-show="!reverseSort"> ▴</span>
<span ng-show="reverseSort"> ▾</span>
</span>
</th>
这是我的代码,我试图从$scope.headers
中的键列表中创建所有table
标头,并使每个标头都可排序。
由于某些原因,此代码不起作用,我在web控制台中也没有收到任何错误。
嵌套作用域存在问题。阅读中的嵌套作用域问题https://github.com/angular/angular.js/wiki/Understanding-Scopes.
关于如何修复它以创建对象并使用其中的值:
$scope.modelData = {};
$scope.modelData.orderByField = 'firstName';
$scope.modelData.reverseSort = false;
$scope.headers = {'First Name':'firstName','Last Name':'lastName'}
现在,相应地使用:
<th ng-repeat="(key,value) in headers"
ng-click="modelData.orderByField = value; modelData.reverseSort = !modelData.reverseSort">
{{ key }}
<span ng-show="modelData.orderByField == value">
<span ng-show="!modelData.reverseSort"> ▴</span>
<span ng-show="modelData.reverseSort"> ▾</span>
</span>
</th>
就像@VVK回答的那样,您的代码中存在问题。不确定您试图定义Array
或Object
,
对象应该这样定义:{'First Name':'firstName','Last Name':'lastName'}
(它们应该以{
开始,以}
结束,但不以[]
结束);
将HTML代码更改为使用modelData
,然后它就会工作:
<tr ng-repeat="item in data | orderBy:modelData.orderByField:modelData.reverseSort">
您的$scope.headers
初始化错误。你应该把它定义为
$scope.headers={'First Name':'firstName','Last Name':'lastName'}
相关文章:
- ng映射方向备选方案
- AngularJS UI路由器不能像ng路由器那样工作
- 角度:在ng重复上切换图像
- 正在使用$location.path(.)路由ng视图
- AngularJS:ng之后,重复$scope值未按预期更新
- ng打开空字符串
- 我应该使用Ng提交还是点击表格
- ng init中的表达式无法使用ng repeat
- ng更改事件不适用于Dropdown
- ng视图外的链接重定向到ng视图内的页面
- ng应用程序使脚本无限运行
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- ng隐藏和ng显示无法正常工作
- 从ng模板访问作用域
- 防止ng重复中的重复值(AngularJS)
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- AngularJs列表ng单击以选择选项转换
- 如何使用AngularJs禁用ng选项中的选项
- ReferenceError: cordova is not defined @ng-cordova.min.js:7
- AngularJS ng-repeat combined with ng-click=orderByField