我有以下控制器代码:
var App = Ember.Application.create();
App.DocumentController = Ember.Controller.extend({
actions:{
test:function(){
console.log('test');
}
}
});
形式如下:
div class="form-horizontal form-group form-group-lg row">
<div class="col-xs-10 col-xs-offset-1 col-sm-6 col-sm-offset-1 col-md-5 col-md-offset-2">
{{input type="text" value=name class="form-control" placeholder="Name of document." autofocus="autofocus"}}
</div>
<div class="col-xs-10 col-xs-offset-1 col-sm-offset-0 col-sm-4 col-md-3">
<button class="btn btn-primary btn-lg btn-block" {{action 'test'}}>Create Document</button>
</div>
</div>
{{#if responseMessage}}
<div class="alert alert-success">{{responseMessage}}</div>
{{/if}}
单击按钮时,调试器输出:
没有处理动作'firstAction'。如果您确实处理了该操作,则可以通过从控制器中的操作处理程序返回true来导致此错误,从而导致操作冒泡
不确定问题是什么 - 路线代码:
Router.map(function() {
this.resource( 'index', { path: '/' } );
this.route('decisions');
this.route('teams');
this.route('about');
this.resource("documents",{ path: '/documents' }, function() {
this.route('/show', {path: '/show/:id'});
this.route('/edit', {path: ':id/edit'});
});
});
型号代码:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('String'),
url: DS.attr('String'),
text: DS.attr('String')
});
我知道ember有一个严格的命名约定,但是我在他们的教程中使用命名约定从ember-cli生成了资源(文档)。如何让模板hbs代码与控制器通信?
答案 0 :(得分:1)
问题在于我的文件夹结构。因为文档模型有很多不同的模板,所以我决定在模板文件夹中添加一个文档文件夹。我应该对控制器文件夹做同样的事情(即添加一个文件夹)。此外,控制器的文件名必须与模板的文件名相同(在本例中为index.hbs表示模板,index.js表示控制器文件)。
答案 1 :(得分:0)
控制器中操作的名称为test
,但您正在调用名称为firstAction
的方法,该方法未定义。
尝试以下方法:
<button class="btn btn-primary btn-lg btn-block" {{action 'test'}}>Create Document</button>