【发布时间】:2017-09-29 12:30:46
【问题描述】:
我正在研究sample app of UI-Router并得到了问题。
在 sample-app-angularjs/app/contacts/editContact.component.js line71~74 中有:
export const editContact = {
bindings: { pristineContact: '<' },
controller: EditContactController,
在 sample-app-angularjs/app/contacts/contacts.states.js line29~38 中有:
export const viewContactState = {
name: 'contacts.contact',
url: '/:contactId',
resolve: {
// Resolve the contact, based on the contactId parameter value.
// The resolved contact is provided to the contactComponent's contact binding
contact: ['Contacts', '$transition$', (Contacts, $transition$) => Contacts.get($transition$.params().contactId)]
},
component: 'contactView'
};
并且在 sample-app-angularjs/app/contacts/contacts.states.js line49~61 中有:
export const editContactState = {
name: 'contacts.contact.edit',
url: '/edit',
views: {
// Relatively target the grand-parent-state's $default (unnamed) ui-view
// This could also have been written using ui-view@state addressing: $default@contacts
// Or, this could also have been written using absolute ui-view addressing: !$default.$default.$default
'^.^.$default': {
bindings: { pristineContact: "contact" },
component: 'editContact'
}
}
};
我的问题是关于参数pristineContact:
-
它是如何从状态 contacts.contact 传递到 contacts.contact.edit 再到组件 editContact 的?我了解状态 contacts.contact 中的解析 contact 在其子状态 contacts.contact.edit 中直接可用,但我找不到任何知识- 与 contacts.states.js 的子句“bindings: { pristineContact: "contact" }' (line57) 相关的基本文档。我猜它会将解析传递给它的组件,因此它的组件可以使用“绑定{...}”来输入它。
-
我没有在组件 editContact 的模板中看到它被使用/引用,但是 $ctrl.contact 被使用/引用了。 -- 我不明白为什么会有“pristineContact”这个名字。
【问题讨论】:
标签: angularjs data-binding angular-ui-router