首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在设置"arrangedContent“时,ArrayController的"sortAscending”并不总是更新

在设置"arrangedContent“时,ArrayController的"sortAscending”并不总是更新
EN

Stack Overflow用户
提问于 2014-01-28 09:22:52
回答 1查看 865关注 0票数 2

我试图使用一个HTML标记在我的Ember.ArrayController子类中设置动态排序,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
App.ListController = Ember.ArrayController.extend
    sortOptions: [{id: 0, text: 'Price High-Low', sortBy: 'pricing', sortAsc: false},
              {id: 1, text: 'Price Low-High', sortBy: 'pricing', sortAsc: true},
              {id: 2, text: 'Name Ascending', sortBy: 'name', sortAsc: true},
              {id: 3, text: 'Name Descending', sortBy: 'name', sortAsc: false}]
    currentSortOptionId: 0

    sortBy: (->
        this.get('sortOptions')[this.get('currentSortOptionId')].sortBy
    ).property('currentSortOptionId')

    # Override
    sortProperties: (->
        [this.get('sortBy')]
    ).property('sortBy')

    # Override
    sortAscending: (->
        this.get('sortOptions')[this.get('currentSortOptionId')].sortAsc
    ).property('currentSortOptionId')

在我的模板里,我有:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sort by {{view Ember.Select content=sortOptions
                                    optionValuePath="content.id"
                                    optionLabelPath="content.text"
                                    value=currentSortOptionId}}

{{#each listing in controller.arrangeContent}}
    ...
{{/each}}

更改选择器大部分时间起作用,并且总是在切换sort属性时起作用。然而,排序方向(通过"sortAscending")属性变得混乱,有时似乎在后面有一个操作(即。为“sortAscending”使用先前选定的值)。

这里会发生什么事?

编辑:下面是一个孤立示例的JSFiddle:http://jsfiddle.net/s9AFr/3/

如果您更改排序选择器几次,您可以说服自己,它在某些时候排序不正确,特别是在排序的升序/降序功能方面。这种方式似乎“滞后”于用户的选择。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-29 07:47:37

不幸的是,我认为这是由于一个错误

为什么会这样

基本上现在发生的事情是,Ember并不期望sortProperties和sortAscending同时发生变化。在SortableMixin的sortAscendingWillChange观察者中,我们跟踪sortAscending的旧值(将其存储在_lastSortAscending中),然后,在after观察者中,如果sortAscending确实这样做了,那么它们只是数组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sortAscendingDidChange: Ember.observer('sortAscending', function() {
  if (get(this, 'sortAscending') !== this._lastSortAscending) {
    var arrangedContent = get(this, 'arrangedContent');
    arrangedContent.reverseObjects();
  }
}),

当您同时设置sortAscendingsortProperties时,如观察者之前的sortAscendingWillChange触发,保留旧的sortAscending属性,则由于sortProperties更改,数组将重新排序,使用sortAscending的新值(因此,此时,一切都按您的预期排序).但是最后,sortAscendingDidChange观察者触发,看到sortAscending是不同的,所以它再次翻转整个数组。

编辑:工作(JSfiddle)

考虑到这个错误的原因,我认为解决方法是确保sortAscendingsortProperties不会同时发生变化。

因此,与其将sortAscending设置为计算属性,我们还可以在观察currentSortOptionId的观察者中设置它,注意在下一个运行循环中设置它(因此我们使用Ember.run.later)。这样,sortProperties计算的属性将首先更改,内容将被排序,然后设置sortAscending属性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21412453

复制
相关文章
Deno: 你并不总是需要NodeJS
Node包管理很复杂, 包之间又有可能互相依赖, 互相引用. 且存在多个版本安装混乱的问题.
极度狂热
2022/06/08
8750
Deno: 你并不总是需要NodeJS
Deno: 你并不总是需要NodeJS
众所周知,Node 包管理很复杂,包之间又有可能互相依赖, 互相引用。且存在多个版本安装混乱的问题。
腾讯专有云
2022/06/24
7610
Deno: 你并不总是需要NodeJS
SQL查询并不总是以SELECT开始
很多 SQL 查询确实以 SELECT 开始(本文仅涉及 SELECT 查询,而不涉及 INSERT 或其他内容)。不过,我在网上搜索 ‘是否可以对窗口函数返回的结果进行过滤’ 这个问题,或者说可以在 WHERE、HAVING 或其他中过滤窗口函数的结果吗?最终我得出的结论是:窗口函数必须在 WHERE 和 GROUP BY 发生之后才能运行,所以答案是我们这样做。于是又引出了另一个问题:SQL 查询的执行顺序是什么样的?
smartsi
2019/11/26
1.2K0
想要实现高效数据复制?Paxos并不总是最佳选择!
元数据,一般包括分片的数据范围、数据量、读写流量和分片副本处于哪些物理节点及副本状态等信息。
JavaEdge
2023/08/09
4240
想要实现高效数据复制?Paxos并不总是最佳选择!
在工作时,领导总是给我安排额外的工作打乱我,怎么办?
1.这个问题的本质是如何更好地进行向上管理,如何在与你的领导建立和谐关系的同时,实现你的影响力。
程序媛淼淼
2022/09/01
6810
java setattribute_java – HttpSession setAttribute并不总是插入新对象「建议收藏」
我注意到HttpSession.setAttribute的工作方式有所不同.在WLS10中,任何已存储在某个键下的对象都将被替换.
全栈程序员站长
2022/09/27
4180
在sudoers中设置pwfeedback时缓冲区溢出
当用户输入密码时, Sudo的pwfeedback选项可用于提供视觉反馈。每次按键都会打印一个星号。添加此选项是为了响应用户对标准“ 密码;"提示如何禁用按键回显的困惑.虽然在sudo的上游版本中默认情况下未启用pwfeedback,但某些系统(例如Linux Mint和Elementary OS)的确在其默认sudoers文件中启用了它.
洛米唯熊
2020/02/17
1.8K0
程序员总是不愿意承认:写代码在公司里是一件并不太重要的事情
程序员总是不愿意承认:写代码在公司里是一件并不太重要的事情,因为他们认为一旦承认了这点,就意味着是对自己的努力工作和能力的否认。 其实并不是,我只想说作为一个程序员,你的核心技能是写代码这并没有问题,但是如果你只想止步于程序员(包含高级程序员),一辈子写代码,那你可以划走,不用继续往下看了。 一个程序员的技术发展路径可以沿着:高级程序员—研发Leader—技术经理—技术总监—架构师—CTO来前进。 如果你将这条路线当作是技术生涯的职业规划,那么写代码只是最基本、最初级的技能。这个时候如果你想成为技术经理/
IT大咖说
2022/08/26
2530
程序员总是不愿意承认:写代码在公司里是一件并不太重要的事情
mybatis-plus在更新数据时乐观锁version无效
今天在使用mybatis-plus乐观锁插件时,发现乐观锁并没有生效。 查了问题发现首先需要查询出结果(也就是需要version),然后再进行更新,这样乐观锁就能起作用了。
似水的流年
2021/02/25
4.5K0
使用 yum update 在CentOS下更新时保留特定版本的软件
有时需要保留特定版本的软件不升级,但升级其他软件,这时就需求用到下面的技巧。当CentOS/RHEL/Fedora下的Linux服务器使用 yum update 时命令如何排除选定的包呢?
用户1685462
2021/08/31
2.5K0
装箱与值类型虽然很容易理解,但是在实际使用中,并不总是能100%用对
public struct Point { private int m_x, m_y; public Point(int x, int y) { m_x = x; m_y = y; } public override string ToString() { return string.Format("{0},{1}",
菩提树下的杨过
2018/01/22
8390
破解棋牌多开时遇到的一个问题:调试时大厅进程总是退出
今天破解一个棋牌游戏多开限制,把互斥体和窗口查找都解除以后,运行大厅程序最后还是会退出。后来发现,不管是不是多开,用OD调试该程序都是100%的退出。经过多番折腾,发现这个游戏的运行过程是这样的:启动大厅程序gameplaza.exe时,该进程会启动update.exe,然后自身退出,然后由update.exe进程再启动gameplaza.exe。用OD打开update.exe,然后下断点:bp CreateProcessW,发现该程序启动gameplaza.exe时带了UPDATED这个参数,这才恍然大悟
用户2135432
2018/06/04
1.3K0
Flutter DataTable 看这一篇就够了
columns参数是DataTable的列,rows参数是DataTable的每一行数据,效果如下:
老孟Flutter
2020/03/04
2.6K0
Flutter 分页功能表格控件
老孟导读:前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析来来。
老孟Flutter
2020/09/11
2K0
火狐浏览器单击链接总是在一个新的标签页打开的设置方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/113491.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/07
3.7K0
火狐浏览器单击链接总是在一个新的标签页打开的设置方法
【Flutter 专题】132 图解 PaginatedDataTable 分页表格
和尚在尝试列表展示时,对于固定类型数据库表展示需要支持左右滑动,了解到 PaginatedDataTable 分页表格,学习一下设计思路;
阿策小和尚
2021/08/25
2.4K0
php取到的时间总是差8小时的解决方法
从php5.1开始,在设置文件”php.ini”里面有一项叫做”date.timezone”,可以设置服务器所在的时区。刚安装的php此项应该是注释掉的,这种情况下使用的是格林尼治标准时间,也就是+-0的时区。 我们可以把这个配置改掉,即去掉前面的分号,在后面的等号之后加上”PRC”,比如”date.timezone=PRC”,就可以纠正过来。其他备选的值有”Asia/Chongqing”、”Asia/Shanghai”、”Asia/Urumqi”、”Asia/Macao”、”Asia/Hong_Kong”、”Asia/Taipei”、”Asia/Singapore”,或者直接使用”Etc/GMT-8″。 如果遇到了像虚拟主机那种无法修改配置文件的情况,可以在获取时间之前加上一句”date_default_timezone_set(‘PRC’);”,就解决了。
ApacheCN_飞龙
2019/02/15
7840
Kail 更新源设置
vim /etc/apt/sources.list #kali官方源 #deb http://http.kali.org/kali kali-rolling main non-free contrib #中科大的源 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib ap
Dean0731
2020/05/11
1.1K0
FMEA分析时为什么总是结构层级不清?
FMEA分析是一种常见的风险管理方法,可以帮助企业识别和解决潜在问题。然而,在实际操作中,FMEA分析时经常出现结构层级不清的情况,那么这个问题到底是如何产生的呢?天行健分析如下:
用户9972271
2023/03/28
2860
点击加载更多

相似问题

Javascript $.get并不总是在点击时更新

40

状态并不总是更新

225

QGraphicsView并不总是更新

11

StatusBar并不总是更新

22

Swing ProgressBar并不总是更新

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文