Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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 使用辅助工具渲染余烬视图_Javascript_Ruby On Rails_Model View Controller_Ember.js_Jsfiddle - Fatal编程技术网

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
    关联,或者使用视图辅助对象的块形式-第一个示例使用模板,第二个示例使用块形式

  • js

    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,因此可以更清楚地看到这个问题