是否可以在Ember.js中使用订户/观察者模式?例如,视图A和视图B都侦听模型C内的更改。这要求模型C能够触发自定义事件。我一直在尝试找出如何在Ember.js中创建模型触发事件,但到目前为止还算不上成功。

最佳答案

我相信您正在寻找的功能在Ember.js中称为“绑定”。

主页上有大量示例,描述了如何建议您做的事情,但是这里有一个简短的回顾:

window.MyApp = Ember.Application.create();

MyApp.MyModel = Ember.Object.create({
  myProperty: "Hello World!",

  goodbye: function() {
    this.set("myProperty", "Goodbye!");
  })
});

MyApp.modelInstance = MyApp.MyModel.create();


现在,在<body>标记内创建两个视图:

<script type="text/x-handlebars">
  View1: <b>{{MyApp.modelInstance.myProperty}}</b>
</script>

<script type="text/x-handlebars">
  View2: <b>{{MyApp.modelInstance.myProperty}}</b>
</script>


现在页面应该呈现,您将看到两个视图都显示“ Hello World!”。打开控制台并输入

MyApp.modelInstance.goodbye();


而且您会看到您的观点变为“再见!”。

视图使用双花括号自动创建到MyApp.modelInstance.myProperty的绑定,但是您可以通过多种方式创建绑定。每当myProperty的值更改时,所有绑定都将自动更新。但是请注意,必须调用set("myProperty", "something new"),以便Ember知道为您更新绑定。如果您只说myProperty = "something new",它将不会触发任何更改事件。

10-05 20:41
查看更多