Javascript 使用辅助工具渲染余烬视图
我已经阅读了在我的余烬应用程序中实现同样的目标,但我不能 我试图用一个控制器来配置我的视图,该控制器使两个值相乘 代码如下:Javascript 使用辅助工具渲染余烬视图,javascript,ruby-on-rails,model-view-controller,ember.js,jsfiddle,Javascript,Ruby On Rails,Model View Controller,Ember.js,Jsfiddle,我已经阅读了在我的余烬应用程序中实现同样的目标,但我不能 我试图用一个控制器来配置我的视图,该控制器使两个值相乘 代码如下: App.TotalView = Ember.View.extend({ attributeBindings: ['value', 'placeholder'], placeholder: null, value: '', total: (function() { return this.get('newThread.selectContentTariffa
App.TotalView = Ember.View.extend({
attributeBindings: ['value', 'placeholder'],
placeholder: null,
value: '',
total: (function() {
return this.get('newThread.selectContentTariffa') * this.get('newThread.primary');
}).property('newThread.selectContentTariffa', 'newThread.primary')
});
在视图中:
<td>{{view "total" valueBinding=newThread.value}}</td>
{{view“total”valueBinding=newThread.value}
在这个视图中,我无法得到这个乘法的结果,这个代码正确吗?怎么了
您可以在这里看到:只关注您所面临的问题,而不是设计,根据您提供的代码,在最后的示例中有以下问题和相应的可能解决方案
newThread
的调用,但它没有在任何地方定义-在控制器中创建newThread
total
您可以创建模板并将其与App.TotalView
关联,或者使用视图辅助对象的块形式-第一个示例使用模板,第二个示例使用块形式App.ThreadsController=Ember.ArrayController.extend({
selectContentTariffa: [
{label: "180", value: "180"},
{label: "200", value: "200"},
{label: "300", value: "300"}
],
newThread:{
value:null,
selectContentTariffa:null,
primary:null
}
});
App.TotalView = Ember.View.extend({
templateName:"total",
attributeBindings: ['value', 'placeholder'],
placeholder: null,
value: '',
total: (function() {
var res= parseInt(this.get('controller.newThread.selectContentTariffa')) * parseInt(this.get('controller.newThread.primary'));
return isNaN(res)?"":res;
}).property('controller.newThread.selectContentTariffa', 'controller.newThread.primary')
});
hbs-示例1
<script type="text/x-handlebars" data-template-name="threads">
<table class="table table-bordered table-hover">
<tr><th>Title 1</th><th>Title 2</th><th>Title 3</th></tr>
<tr>
<td>{{view Ember.Select prompt="Tariffa" valueBinding=newThread.selectContentTariffa content=selectContentTariffa optionValuePath="content.value" optionLabelPath="content.label"}}</td>
<td>{{view Em.TextField type="number" valueBinding=newThread.primary class="form-control"}}</td>
<td>{{view "total"}}</td>
</tr>
</table>
</script>
<script type="text/x-handlebars" data-template-name="total">
this is total:{{view.total}}
</script>
标题1标题2标题3
{{view Ember.Select prompt=“Tariffa”valueBinding=newThread.selectContentTariffa content=selectContentTariffa optionValuePath=“content.value”optionLabelPath=“content.label”}
{{view Em.TextField type=“number”valueBinding=newThread.primary class=“form control”}
{{查看“总计”}
这是总计:{{view.total}
hbs-example2
<script type="text/x-handlebars" data-template-name="threads">
<table class="table table-bordered table-hover">
<tr><th>Title 1</th><th>Title 2</th><th>Title 3</th></tr>
<tr>
<td>{{view Ember.Select prompt="Tariffa" valueBinding=newThread.selectContentTariffa content=selectContentTariffa optionValuePath="content.value" optionLabelPath="content.label"}}</td>
<td>{{view Em.TextField type="number" valueBinding=newThread.primary class="form-control"}}</td>
<td>{{#view "App.TotalView"}}t:{{view.total}}{{/view}}</td>
</tr>
</table>
</script>
标题1标题2标题3
{{view Ember.Select prompt=“Tariffa”valueBinding=newThread.selectContentTariffa content=selectContentTariffa optionValuePath=“content.value”optionLabelPath=“content.label”}
{{view Em.TextField type=“number”valueBinding=newThread.primary class=“form control”}
{{{#view“App.TotalView”}}t:{{{view.total}}{{/view}
例1-
例2-我看到了你的垃圾箱。我很困惑。我可以知道你想要实现什么,这样我就可以重写它,而不是告诉你错在哪里。我猜你把简单的任务复杂化了。请更新你的用例,我已经缩小了jsbin,因此可以更清楚地看到这个问题