我正在尝试制作我的第一个Ember应用程序,我正在努力解决Ember.set()错误。
我的nextMonth函数工作正常并且渲染正常但是如果我添加{{month}}
在我看来,我收到了一个错误。
查看:
<h2>{{month}}</h2>
<button {{action "nextMonth"}}>Next</button>
{{#increment-for times=days }}
{{/increment-for}}
控制器:
import Ember from 'ember';
export default Ember.Controller.extend({
month: new Date().getMonth() + 1,
year: new Date().getFullYear(),
getDays: function(year, month){
const date = new Date(year, month, 0).getDate();
this.set('days', date);
},
init: function() {
this.getDays(this.month, this.year);
},
actions:{
nextMonth: function(){
if(this.month !== 12){
this.set('month', this.month++);
}
else if(this.month === 12){
this.set('month', 1);
this.set('year', this.year++);
}
this.getDays(this.year, this.month);
}
}
});
答案 0 :(得分:0)
始终使用get
method获取属性值,set
method仅设置属性值,然后触发Embuted属性,如ComputedProperty和Observer,模板值将为修改后改变了。
与评论中建议一样,使用插件ember-moment,您可以使用ember install ember-moment
命令进行安装。您将获得许多帮助器来使用它的模板及其moment.js popular library的包装器,这样您只需执行import moment from 'moment';
关于您的代码,您可以在month
方法本身中初始化year
init
。当您使用this._super(...arguments)
时,请不要使用Ember.Object
来拨打超级电话。
答案 1 :(得分:-2)
问题是使用++增加了。将它改为this.month + 1之后就可以了。