2

在 Ember 指南中,我们可以找到以下示例:

{{view Ember.Select viewName="select" contentBinding="App.peopleController" optionLabelPath="model.fullName" optionValuePath="model.id" prompt="Pick a person:" selectionBinding="App.selectedPersonController.person"}}

传入视图的变量之一绑定到 PeopleController,但其余变量optionValuePath也连接到应用程序的其他部分。

我有点困惑,因为有时我不知道应该使用哪一个。但是所有这些都可以在视图内访问。

(没有'-Binding')是optionLabelPath单向绑定还是只是一劳永逸地传递值?

有什么不同?

4

1 回答 1

2

当您使用视图助手从把手创建视图实例时,所有(好的,大多数)名称=值对都将传递给视图的 create 方法。所以:

{{view Ember.Select viewName="select" contentBinding="App.peopleController" optionLabelPath="model.fullName" optionValuePath="model.id" prompt="Pick a person:" selectionBinding="App.selectedPersonController.person"}}

变成

view = Ember.Select.create({
    contentBinding="App.peopleController"
    optionLabelPath="model.fullName"
    optionValuePath="model.id"
    prompt="Pick a person:"
    selectionBinding="App.selectedPersonController.person"
})

由于 Ember 的“使用 /^*Binding/-NAMED PROPERTIES 自动创建绑定”功能,其中两个属性contentselection绑定到应用程序的其他部分 - 请参阅Ember 绑定 API 文档

optionLabelPath (no '-Binding') 是单向绑定还是只是一劳永逸地传递值?

其他 3 个(没有“-Binding”)属性没有什么特别之处。每个都被设置为一个简单的字符串。Ember.Select将遍历内容数组 (App.peopleController) 并使用optionLabelPath查找数组中每个项目的标签。并optionValuePath用于查找值。

有什么不同?

所以任何以结尾的东西Binding都期待通往其他对象的路径。其他所有内容都只是作为字符串传递。Ember.Select 恰好以Path一种特殊的方式使用这两个属性,但这只是一个命名约定。

于 2013-05-25T22:42:46.460 回答