我想我們基於MVC的網站的前端分離成幾個組成部分,我想使用角度爲目的(如創建購物車的應用程序,我可以包括我的看法之後)。外部值傳遞給一個角度應用
問題是,我需要幾個變量傳遞到該應用程序,我不知道該怎麼做安全,專業。我在想是這樣的:
- 我要
ng build --prod --aot
- 我注入我的所有腳本我的看法
- 我注入傳遞給瀏覽到我的應用程序
變量.. 。和 「代碼」 爲我的想法表示:
控制器:
public function viewAction()
{
$this->view->addCss('angular/app/styles.css'); // adds styles for cart app
$this->view->addJS('angular/app/scripts.js'); // adds scripts for cart app
$this->view->setJSVariable('idCustomer', 555); // sets global var idCustomer
}
查看:
<!-- bunch of HTML for view ... -->
<script>
// CartApp would be an angular app.
CartApp.use([
idCustomer
]);
</script>
所以我的問題是...這將是可能的(這將是一個很好的解決方案),以獲得CartApp
作爲一個對象,然後進行一些功能(如use
在上面的例子中),將設置/傳遞數據? (比方說一些全球提供的服務/組件或其他任何東西)。或者有沒有其他方法可以做到這一點?就像從窗口對象的應用程序內部獲取變量一樣? (因爲無論如何他們將被綁定到窗口)。謝謝。
這正是我所期待的。特別是第二種方式看起來相當不錯。非常感謝你@Scotty。 –
我實際上有一些時間來看看它,但我無法像在第二個示例中那樣提供AppData。我遇到的錯誤是......'AppData'('provide'的vlaue沒有被指定(它應該首先被提供),第二個是該窗口沒有'APP_DATA'屬性(因爲它不是已知的您可以爲您的答案的第二個示例添加更多代碼示例嗎?不僅適用於我,也可能適用於其他具有相同問題的用戶。謝謝。 –
我更新了代碼。測試它,但是已經從例子中編譯過了,對此我很抱歉,我沒有試圖獲得類型代碼,可以爲APP_DATA創建一個接口,將它導入到組件中,並在注入時使用它這個構造函數是:'constructor(@Inject('AppData')appData:MyAppDataInterface)'。讓我知道我的更新後的代碼是否適合你。主要的改變是在'provide:'字段中使用字符串,使用'(窗口) ',並使用'@Inject'。可能有更乾淨的方法來做到這一點,所以如果你找到了,請告訴我任何改進:) –