2014-01-18 43 views

回答

2

你需要定製包。它應該位於您的項目的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

+0

是否有可能作出補充而不編輯包文件?就像在運行時注入代碼一樣。 – Nyxynyx

+0

因爲它是所有的JavaScript,你實際上可以在那裏使用jquery注入額外的標記。 –

+0

是的,你可以很容易地注入所有你想要的新的HTML元素。請參閱下面的答案。 ;) – FullStack

0

無需編輯軟件包文件就可以進行添加,例如在運行時注入代碼。假設你使用的鐵:路由器,你可以在頁面呈現之前,每一次注入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的東西,這樣就可以跟蹤哪些已經是那裏!

0

自上次答案有效以來流星發生了變化。

我得到它的工作方式是通過從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... 
    }); 
    } 
});