在视图中有和没有Binding后缀的变量 - 区别是什么?

时间:2013-05-25 17:35:45

标签: ember.js

在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')是单向绑定还是只传递一次值?

有什么区别?

1 个答案:

答案 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"
})

因此,两个属性contentselection已经绑定到应用程序的其他部分,这要归功于Ember的“使用/ ^ *绑定自动创建绑定” / -NAMED PROPERTIES“功能 - 请参阅Ember Binding API docs

  

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

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

  

有什么区别?

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