2012-05-06 45 views
-10

我認爲問題的含糊性是問題的一部分,所以我真正的第一個問題是,你在Angular中稱什麼事情如何在Angularjs中創建一個新的呃東西?

我試圖命名的東西是視圖加上控制器,在單個對象的模型。我甚至不知道該怎麼稱呼它。對於我事先知道的事情,我將需要,我一直在創建指令,但是你稱之爲指令創建的事件的一個實例是什麼?

我有幾種情況突然(響應某些外部事件),我有一個新的對象在模型中,我想在屏幕上顯示它。 Angular似乎希望我在他們的父視圖中列出所有可能的視圖abinitio,但這對我來說並不合理。例如,我將如何列出所有彈出窗口和工具提示以及其他內容。

我在一些小小的情況下,在控制器代碼深處,它需要添加一些東西到當前視圖。什麼是公認的做法。

順便說一句,$ route/ng-view恰恰就是這種情況。包含ng-view和ng-view DIV本身的視圖不知道$ route模塊將放置在ng-view中。我需要這種策略的更一般的情況。

編輯

人們一直在問的一個例子。這個怎麼樣:我正在製作一個設備申請應用程序。當用戶要求將1000種不同類型的設備中的一種發送給他時,我需要顯示一個彈出窗口來收集特定於該類型的附加信息。如果他要求使用螺絲刀,彈出窗口會詢問刀片尺寸,頸部長度和手柄組成;如果他要求一架飛機,這將是一個嚮導問他關於發動機大小,油箱,座位安排。所有應用程序在啓動時都知道所有設備類型的列表,以及收集關於每種特定類型的所有後續信息的UI元素的名稱。

+0

我很抱歉,但我不明白你問什麼......你可以看到在網站上http://angularjs.org/彈出窗口(檢查出任何例子的代碼,對所有的重點代碼有彈出窗口的解釋) – Vojta

+0

顯然,如果我可以讓我的問題更清楚,我會。你能說它變得不清楚嗎?我無法在angularjs.org上找到帶有彈出窗口的任何代碼示例;你有網址嗎? – Malvolio

+0

簡單的工具提示http://jsfiddle.net/gxw5j/ – Vojta

回答

0

我認爲問題在於你認爲你需要在控制器中創建「事物」,但實際上你不需要。雙向數據綁定的工作方式是更改某個屬性值,並且視圖基於此更改。我從來沒有見過這樣的用例,儘管這還不夠,彈出窗口和工具提示。但是,如果你確實必須讓控制器顯示某些東西,那麼可以利用angular的事件來做到這一點。您需要兩部分:負責顯示內容(修改DOM)的指令和控制器。控制器將$使用一些參數廣播一個事件,並且該指令將使用$ on監聽這些事件並相應地作出反應。

+0

其實我是。否則,視圖將不得不全面列出它可能顯示的所有可能的事物 - 我不能像繼承一樣執行普通的OO事情。如果你不相信我,看看$ route/ng-view,並問自己爲什麼* ng-view *不知道路由可能做的所有事情。 – Malvolio

2

我在一些小小的情況下,在控制器代碼深處,它需要添加一些東西到當前視圖。什麼是公認的做法。

某處,您需要定義所有您需要的視圖 - 例如,所有設備彈出窗口。您可以將每個視圖放入一個單獨的文件中,並使用ng-include來動態拉入當前需要顯示的視圖。定義你的$範圍(例如:$ scope.equipmentTypeViewUrl)的屬性,然後

<div ng-include src="equipmentTypeViewUrl"></div> 

由於NG-視圖只能出現每頁一次,NG-包括可能不是你需要的,如果你需要多個使用什麼路由級別。

0

見我只是確保我進來作爲模型的一些有用的代碼...

<div class="row" ng-repeat="attribute in attributes"> 
    <div class="widget" ng-repeat="input in attribute.inputs"> 
     <input type="{{input.type}}" ng-model="input.value" /> 
    </div> 
</div> 

我的知識水平非常有限,但我所知道的是,如果您的模型具有確定的結構,您可以構建一個動態反應的視圖。

0

如果所有這些事情都與你原來的對象(屬性或以其他某種方式),你可以遍歷數據,顯示其屬性,如果需要使用按鍵和過濾器標籤。 Imho這不是一個真正的問題,如果你的數據結構更多的話。如果你有一個好的數據結構,你可以使用一個服務來創建一個相關的數據對象。

對於相關的彈出窗口,你可以用一個指令,甚至過程中存在的模型數據(建議僅如果它有一個一致的結構)。

如果你不喜歡這種方式,你可以直接在模板中處理數據。

但是,如果沒有更具體的細節,就不會有明確的答案。

相關問題