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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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
Ember.js 为什么元素Id作为ember视图中的计算属性在ember 1.0.0-PRE.4中不起作用?_Ember.js - Fatal编程技术网

Ember.js 为什么元素Id作为ember视图中的计算属性在ember 1.0.0-PRE.4中不起作用?

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() }) }

下面是描述该问题的JSFIDLE。第一个视图的计算属性为elementid,第二个视图的计算属性为显式元素id。第一个视图的id未更改,而第二个视图的id为。

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();
        }
    })
})