Ember.js:视图输入和模型之间的关系

时间:2014-04-14 15:37:35

标签: javascript model-view-controller ember.js ember-data

我是Ember.js的新手,但精通MVC和Backbone(甚至是可可和smalltalk),但由于某种原因,Ember坚持其高度模糊和不一致的API让我无法理解1)绑定和2)如何与持久记录相关。

我有一个有输入的视图。我知道。我有一个属于控制器的模型。我知道。我不明白视图是如何知道(或者应该知道)关于控制器的,我不明白当我准备将它推到后端时,模型如何获取我在视图中键入的文本(表面上看)与.save())。这些应该是Ember气喘吁吁抽象的样板样式的东西,但我发现我必须通过Ember.js来源才能理解发生了什么。

我已经阅读过这些文档,他们的例子非常人为,无法使用(仅提供最基本的例子,当我们谈论“野心勃勃的网络应用程序”时,这是毫无意义的,其中包含了 for)。

应该注意的是,我们在内部使用ember-data,这个特定的路径有多个视图,控制器和模型。

1 个答案:

答案 0 :(得分:1)

因此,假设您在索引模板中有输入:

<script type="text/x-handlebars">
     {{input type="text" value=name}}
</script>

Ember会自动将App.IndexController绑定到此模板,并将控制器的name属性绑定到输入字段的value属性。当输入中的值发生变化时,它将在控制器中自动更新。当您准备将其保存在模型中时,您可以在操作中访问该属性。

App.IndexController = Ember.ObjectController.extend({
    actions: {
        save:function() {
            var name = this.get('name');
            var model = this.store.createRecord('item');
            item.set('name',name);
            item.save();
        }
    }
});

这将触发向/items发布项目的帖子请求。

如果你有一个更具体的例子,我可以试着告诉你它是如何运作的。