用戶使用meteor-accounts-ui-bootstrap-3
包登錄到網站後,由{{loginButtons}}
創建的下拉列表顯示2個按鈕。添加指向流星帳戶的下拉菜單的更多鏈接-ui-bootstrap-3
我們如何在下拉菜單中添加更多按鈕?
用戶使用meteor-accounts-ui-bootstrap-3
包登錄到網站後,由{{loginButtons}}
創建的下拉列表顯示2個按鈕。添加指向流星帳戶的下拉菜單的更多鏈接-ui-bootstrap-3
我們如何在下拉菜單中添加更多按鈕?
你需要定製包。它應該位於您的項目的packages/
目錄中。控制此下拉列表的文件是login_buttons_dropdown.html
。
請注意,運行mrt update
可能會影響您對隕石包的更改。您可能希望將包文件夾重命名爲accounts-ui-bootstrap-3-custom/
,執行mrt remove accounts-ui-bootstrap-3
,然後mrt add accounts-ui-bootstrap-3-custom
。
無需編輯軟件包文件就可以進行添加,例如在運行時注入代碼。假設你使用的鐵:路由器,你可以在頁面呈現之前,每一次注入HTML代碼在客戶端:
var addExtraHTML = function() {
var user = Meteor.user();
//check if user is signed in and that desired HTML element does not already exists
if (user && $('#idOfDesiredHTMLElement').length===0) {
var newHTML = "<a href='#' class='btn btn-default btn-block' id='idOfDesiredHTMLElement'>Edit Account</a>";
//Add desired HTML above the change password button
$('#login-buttons-open-change-password').before(newHTML);
}
this.next();
};
Router.onBeforeAction(addExtraHTML); //Injects HTML every time before the page loads
確保給你加一個id的東西,這樣就可以跟蹤哪些已經是那裏!
自上次答案有效以來流星發生了變化。
我得到它的工作方式是通過從accounts-ui軟件包附加到下拉模板的onRender事件。
測試上: [email protected] - [email protected]
Template._loginButtonsLoggedInDropdownActions.onRendered(function() {
// Validate user exists and YOUR ELEMENT is not already in place
if (Meteor.user() && $('#YOUR_ELEMENT').length === 0) {
// Inject YOUR ELEMENT before the 'Change password' button
$('#login-buttons-open-change-password').before('<div class="login-button" id="YOUR_ELEMENT">YOUR_ELEMENT</div>');
// EXTRA: Attach an event to YOUR ELEMENT
$('#login-buttons-open-account-page').on('click', function() {
// Event Action...
});
}
});
是否有可能作出補充而不編輯包文件?就像在運行時注入代碼一樣。 – Nyxynyx
因爲它是所有的JavaScript,你實際上可以在那裏使用jquery注入額外的標記。 –
是的,你可以很容易地注入所有你想要的新的HTML元素。請參閱下面的答案。 ;) – FullStack