在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
也连接到应用程序的其他部分。
我有点困惑,因为有时我不知道应该使用哪一个。但是所有这些都可以在视图中访问。
optionLabelPath
(没有'-Binding')是单向绑定还是只传递一次值?
有什么区别?
答案 0 :(得分:2)
当您使用视图助手从手柄创建视图实例时,name = value对的所有(ok,most)都将传递给视图的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"
})
因此,两个属性content
和selection
已经绑定到应用程序的其他部分,这要归功于Ember的“使用/ ^ *绑定自动创建绑定” / -NAMED PROPERTIES“功能 - 请参阅Ember Binding API docs。
optionLabelPath(没有'-Binding')是单向绑定还是只传递一次值?
其他3(没有'-Binding')属性没有什么特别之处。每个都设置为一个简单的字符串。 Ember.Select
将循环遍历内容数组(App.peopleController)并使用optionLabelPath
从数组中的每个项目中查找标签。 optionValuePath
用于查找值。
有什么区别?
所以以Binding
结尾的任何东西都期望到其他对象的路径。其他所有东西都只是作为一个字符串传递。 Ember.Select恰好以特殊方式使用两个Path
属性,但它只是一个命名约定。