properties - Ember 多个属性更改,但要触发单个事件

标签 properties ember.js

我有一个用于日期选择器的ArrayController,其属性和的。现在,当用户从用户界面中选择新的日期范围时,以及值都会更改。

因此,观察者从
到和到和的函数针对日期范围的单个更改触发两次。

我只想在每个日期范围更改一次触发该功能。关于如何用 Ember 做到这一点的任何建议

    app = Ember.Application.create();

    app.Time = Ember.ArrayController.create({

        to: null,
        from: null,
        rootElement: "#time",

        debug1: function() {
            this.set('to', 1);
            this.set('from', 2);
        },

        debug2: function() {
            this.setProperties( {
                'to': 3,
                'from': 4
            });
        },

        debug3: function() {
            this.beginPropertyChanges();
            this.set('to', 5);
            this.set('from', 6);
            this.endPropertyChanges();
        },

        search: function() {
            alert('called');
        }.observes('to', 'from')
    });

View in JS Fiddle

最佳答案

也许您可以在fromto上引入一个计算属性,然后将观察者插入该属性。由于默认情况下会缓存CP,因此我认为观察者只会被触发一次。

date: function(){
 // return the computed date
}.property('from', 'to')

dateDidChange: function(){

}.observes('date')

编辑多亏了您的 fiddle ,它似乎可以使用setProperties或begin/end属性更改http://jsfiddle.net/Sly7/zf2q3/1/

关于properties - Ember 多个属性更改,但要触发单个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13316538/

相关文章:

ember.js - 从子路由过渡到父路由时的 Ember 钩子(Hook)

ember.js - JSONAPI Ember 数据支持哪些子集?

Python:将属性及其函数(fget、fset、fdel)从一个类复制到另一个类

android - 如何在android中修改我的自定义属性文件

java - 将参数传递给 log4j 文件

vb.net - 自定义控件中的文本属性丢失值

javascript - Ember CLI 异步初始化程序和 cordova 准备情况

ember.js - Emberjs - 禁用和启用文本字段

php - 如果它们相同,为什么我会得到 "definition differs"?

ember.js - 使用额外的树在 ember-cli-build 中正确地 babel 转译文件