Ember.js 为什么元素Id作为ember视图中的计算属性在ember 1.0.0-PRE.4中不起作用?
下面是描述该问题的JSFIDLE。第一个视图的计算属性为elementid,第二个视图的计算属性为显式元素id。第一个视图的id未更改,而第二个视图的id为。Ember.js 为什么元素Id作为ember视图中的计算属性在ember 1.0.0-PRE.4中不起作用?,ember.js,Ember.js,下面是描述该问题的JSFIDLE。第一个视图的计算属性为elementid,第二个视图的计算属性为显式元素id。第一个视图的id未更改,而第二个视图的id为。 App=Ember.Application.create(); App.MultiView=Ember.View.extend({ templateName:'appl', textInput:Ember.TextField.extend({ elementId:function(){ 返回“磁盘”; }.property() }) }
App=Ember.Application.create();
App.MultiView=Ember.View.extend({
templateName:'appl',
textInput:Ember.TextField.extend({
elementId:function(){
返回“磁盘”;
}.property()
})
})
App.MultiView.create().append();
{{view view.textInput}
{{view Ember.TextField elementId=“answer”}
经过一些挖掘和实验,我发现:
在本线程中,当设置elementId时,将解释:
由于视图在init上注册为Ember.view.views,因此需要在init运行之前定义elementId。这与印度邦无关
这是一把小提琴,确认:
在该线程中,解释了在初始化之前不计算计算的属性:
这一点以前已经讨论过了。创建扩展原型,它不用于设置计算的属性值。这是不会改变的。如果你想要这个,你可以考虑使用SETPATIONS。
总的来说,由于elementId是在原型初始化时使用的,因此在构建对象后不能更改它,因此使用计算属性来确定id是错误的。最好在init方法中设置id,然后调用它 经过一些挖掘和实验,我发现: 在本线程中,当设置elementId时,将解释: 由于视图在init上注册为Ember.view.views,因此需要在init运行之前定义elementId。这与印度邦无关 这是一把小提琴,确认: 在该线程中,解释了在初始化之前不计算计算的属性: 这一点以前已经讨论过了。创建扩展原型,它不用于设置计算的属性值。这是不会改变的。如果你想要这个,你可以考虑使用SETPATIONS。
总的来说,由于elementId是在原型初始化时使用的,因此在构建对象后不能更改它,因此使用计算属性来确定id是错误的。最好在init方法中设置id,然后调用它 谢谢你的努力!很好,谢谢你的努力!效果很好
App = Ember.Application.create();
App.MultiView = Ember.View.extend({
templateName : 'appl',
textInput: Ember.TextField.extend({
elementId : function(){
return "disk";
}.property()
})
})
App.MultiView.create().append();
<script type="text/x-handlebars" data-template-name="appl">
{{view view.textInput}}
{{view Ember.TextField elementId="answer"}}
</script>
App.MultiView = Ember.View.extend({
templateName : 'appl',
textInput: Ember.TextField.extend({
init: function() {
// This view's id will not be set to 'disk'.
return this._super();
this.set('elementId', 'disk');
}
}),
textInput2: Ember.TextField.extend({
init: function() {
// This view's id will be set to 'answer'.
this.set('elementId', 'answer');
return this._super();
}
})
})