2016-09-21 69 views
1

我有一个运行每当用户改变wj-input-time的值的函数下面的代码:问题与Wijmo的ValueChanged事件+数据的结合角2

@Component({ 
    selector: 'my-app', 
    template: '<wj-input-time [step]="1" (valueChanged)="test()"></wj-input-time>' 
}) 
export class AppComponent { 

    test() { 
    console.log('test'); 
    } 

} 

以上工作正常,但当我添加数据绑定在输入valueChanged事件被触发的应用程序加载时,以及当用户只需点击输入这是不理想的结果:

@Component({ 
    selector: 'my-app', 
    template: '<wj-input-time [(value)]="testDate" [step]="1" (valueChanged)="test()"></wj-input-time>' 
}) 
export class AppComponent { 

    testDate: Date = new Date(); 

    test() { 
    console.log('test'); 
    } 

} 

我花了很多时间阅读Wijmo的文档,但它没有帮助。我错过了什么或做错了什么?

我使用角2最终和Wijmo 5.20162.211 EVAL

这里有一个Plunker显示问题(检查控制台日志):http://plnkr.co/edit/RFo84NEUbypSWwPPu8Go?p=preview

这里也是截图: enter image description here enter image description here

回答

1

这是因为您构建的日期与第二天的确切日期完全相同,但小部件只能精确到分钟。由于这个原因,小部件在计算出所需的其他值时重写该变量 - 这是您单击箭头按钮时的情况。

如果您构建的日期确切只有给定的分钟,第二条日志消息不会再出现。

@Component({ 
    selector: 'my-app', 
    template: '<wj-input-time [(value)]="testDate" [step]="1" (valueChanged)="test()"></wj-input-time>' 
}) 
export class AppComponent { 

    testDate: Date; 

    constructor() { 
    var d = new Date(); 
    this.testDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes()); 
    } 

    test() { 
    console.log('test'); 
    } 

} 

查看调整后的plnkr code

+0

谢谢!另外一名Wijmo开发人员告诉我,加载时执行valueChanged事件是正确的行为,因为绑定会更改该值。我想现在一切都解释清楚了。 – nunoarruda

+0

那么我该怎么做如果想在'valueChanged'中获得当前值而不绑定'value'? – codefalling