5

我的http://jsfiddle.net/pF2cF/6/代码有 2 个问题: 1. 单击“MyButton”不会转到 App.indexController 中的 clickButton 功能 2. 在文本字段中输入将首先触发 MyButton 单击(如果#1 解决)

任何人都可以帮助解决它们吗?我确实有一个使用的解决方法,但我不确定使用有什么问题。

谢谢!

代码片段如下,使用 2013 年 1 月 14 日 master 分支中的 ember.js:

    <script type="text/x-handlebars" data-template-name="myTemplate">
        <button {{action clickButton target="App.indexController"}} >MyButton1</button>
        {{view App.MyView placeholder="Input something 1 and enter"}}
    </script>

App = Em.Application.create({
  ready: function () {
  }
});

App.Router.map(function () {
  this.route("index", { path: "/" });  //master 01142013 syntax
});
App.IndexRoute = Ember.Route.extend({
  renderTemplate: function () {
    this.render('myTemplate', {controller: 'indexController'});
  }
});

App.indexController = Ember.Controller.extend({
  clickButton: function () {
    alert("clickButton");
  }
});

App.MyView = Em.TextField.extend({
  insertNewline: function (evt) {
    alert("enter pressed");
  }
});
4

1 回答 1

18

你犯了一些小错误。我在JSBin上放了一个工作版本。

没有导致任何失败的风格问题:

  • 您不需要声明任何index路线。
  • 您不需要readyApplication. 通常,将启动逻辑放在 中ApplicationRoute#setupController,您也可以在其中访问控制器。
  • 除非您尝试跨多个路由共享单个模板,否则您应该将模板命名为与路由相同的名称。在这种情况下,您应该只使用index而不是myTemplate.

与失败相关的问题:

  • 控制器名称应大写:App.IndexController不是App.indexController
  • 如果目标是当前控制器,则不应指定目标。
  • 您的render电话指定{ controller: 'indexController' }. 应该是{ controller: 'index' }
于 2013-01-18T07:13:19.170 回答