Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ember子组件仅在单击时更新父组件模型_Javascript_Ember.js_Pikaday - Fatal编程技术网

Javascript Ember子组件仅在单击时更新父组件模型

Javascript Ember子组件仅在单击时更新父组件模型,javascript,ember.js,pikaday,Javascript,Ember.js,Pikaday,我得到了这个表单组件,其中有一个日期选择器子组件,基于Pikaday 在表单组件中我得到了日期选择器值的观察者: // form-component.hbs {{date-picker value=model.dueDate}} // form-component.js testDueDate: function() { console.log(this.get('model.dueDate')); }.observes('model.dueDate'); // date-picker

我得到了这个
表单组件
,其中有一个
日期选择器
子组件,基于Pikaday

表单组件中
我得到了
日期选择器
值的观察者:

// form-component.hbs
{{date-picker value=model.dueDate}}


// form-component.js
testDueDate: function() {
  console.log(this.get('model.dueDate'));
}.observes('model.dueDate');

// date-picker.js
testDatepickerValue: function() {
  console.log(this.get('value'));
}.observes('value');

// Only triggers date-picker's observer, but not the one from form-component:
this.set('value', new Date());
当我手动选择一个日期(即打开日期选择器并用鼠标单击任何日期)时,一切正常:《代码>testDueDate()和《代码>testDatepickerValue()》都会触发并显示给定的日期

但是,当我通过编程设置日期(即通过Pikalendar API)时,父组件的观察者不会启动,即使datepicker中的观察者执行并显示
已更改

通过查看Pikalendar的代码,我可以看到,无论是单击日期还是通过编程设置日期,都使用了
setDate()
函数,因此,从那时起,一切都应该触发相同的函数

在某种程度上,表单组件仅在单击日历时更新
值。

你知道我做错了什么吗


谢谢

如果可能的话,您可以共享整个代码,那就太好了。从你所写的描述来看,它似乎必须起作用;但不知何故,它不是。@alptugd让我看看共享一些函数代码的最佳方式是什么……使用这样的观察者不是一个好主意。这将导致代码产生大量的副作用,基本上无法调试。使用计算属性或闭包操作进行组件间通信会更好。En烬核心团队的官方指导是考虑观察者一个只在内部使用的框架原语。如果您发布更多的代码,我们可以建议更好的结构方式it@ChristopherMilne我并没有实际使用它们,它只是用于调试的测试代码,但感谢您的输入。如果您能尽可能共享整个代码,那就太好了。从你所写的描述来看,它似乎必须起作用;但不知何故,它不是。@alptugd让我看看共享一些函数代码的最佳方式是什么……使用这样的观察者不是一个好主意。这将导致代码产生大量的副作用,基本上无法调试。使用计算属性或闭包操作进行组件间通信会更好。En烬核心团队的官方指导是考虑观察者一个只在内部使用的框架原语。如果您发布更多的代码,我们可以建议更好的结构方式it@ChristopherMilne我并没有实际使用它们,它只是用于调试的测试代码,但感谢您的输入。