Ember.js:控制器动作没有被'sendAction'从一个组件
Ember.js: controller actions not triggered by 'sendAction' from a component
我在Ember.js应用程序和一些不工作的sendAction中面临一些问题。基本上,我有:-输入组件(触发动作的组件)-一个控制器/模板(包含组件的呈现)-另一个控制器/模板,我们在其中呈现前一个控制器。
代码如下:
首先,文本字段组件:Tm.JiraCloudInputComponent = Ember.TextField.extend({
keyDown: function (event) {
if (event.keyCode === 27) {
this.sendAction('cancelJiraCloudUrl');
}
if (event.keyCode === 13) {
event.preventDefault();
this.sendAction('saveJiraCloudUrl');
}
},
blur: function () {
this.sendAction('saveJiraCloudUrl');
}
})
具有动作的控制器:
Tm.JiraCloudController = Ember.Controller.extend({
jiraCloudEnabled: Ember.computed.oneWay('content.jiraCloudEnabled'),
jiraCloudUrl: Ember.computed.oneWay('content.jiraCloudUrl'),
successMessage: '',
errorMessage: '',
actions: {
saveJiraCloudUrl: function () {
if (Tm.isEmpty(this.get('jiraCloudUrl'))) {
this.unlinkJiraCloud();
} else {
this.linkJiraCloud();
}
},
cancelJiraCloudUrl: function () {
this.set('jiraCloudUrl', this.get('model.jiraCloudUrl'));
this.set('jiraCloudEnabled', this.get('model.jiraCloudEnabled'));
this.clearMessages();
}
}
});
及其关联模板:
{{#default-box id="jira-cloud-settings" class="box-full-width"}}
{{box-header title="settings.jira_cloud"}}
{{#box-content}}
{{jira-cloud-input class="form-control" value=jiraCloudUrl placeholder="Jira cloud url"}}
<button type="button" class="btn btn-default" title="Link Jira cloud" {{action "saveJiraCloudUrl"}}>Link Jira cloud</button>
{{/box-content}}
{{/default-box}}
注意:盒子(default-box, box-content)也是组件。
最后,我们在其中呈现前一个控制器的模板:
{{render "jiraCloud" content}}
我找不到任何明显的为什么它不起作用。'sendAction'调用不会引发错误。请注意,按钮上的动作就像一个符咒。
谢谢你的帮助,文森特
好吧,其实我很傻。我太习惯旧的"send"了,所以在渲染组件时忘记了做映射:
{{jira-cloud-input save="saveJiraCloudUrl" esc="cancelJiraCloudUrl" class="form-control" value=jiraCloudUrl placeholder="Jira cloud url"}}
在代码中:
Tm.JiraCloudInputComponent = Ember.TextField.extend({
keyDown: function (event) {
if (event.keyCode === 27) {
this.sendAction('esc');
}
if (event.keyCode === 13) {
this.sendAction('save');
event.preventDefault();
}
},
blur: function () {
this.sendAction('save');
}
})
相关文章:
- 如何在react js中将值从一个组件发送到另一个组件
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- Angular2将组件方法导入到另一个组件中
- 有没有一个Nodejs库可以序列化和反序列化命名组件的路径(比如URL路径名)
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 如何在另一个组件中获取指令/组件实例
- Vue.js获取组件中的一个元素
- 制作一个高阶组件,用TypeScript实现反应中继和反应路由器的交互操作
- reactjs-redux,是否可以有一个由2个组件使用的状态
- 无法将react组件作为属性传递给另一个组件
- 在React中将方法从一个组件移动到另一个组件,并且仍然可以在原始组件中使用
- Angular 2,在没有直接关系的两个组件之间共享一个对象
- 在另一个文件夹中显示React组件
- 有没有一条清晰的路径,我可以实现一个在 ScalaJS + React 中广泛使用上下文的 React 组件
- 如何从一个组件访问另一个组件的状态
- 如何创建一个组件,我可以设置在 Angular 2 中的属性中获取 URL 数据
- 是否有一个 API 来控制火狐附加组件 SDK 中的下载
- Vue.js从另一个组件获取数据
- bind():您正在将一个组件方法绑定到该组件.React会自动为您执行此操作