2014-01-08 64 views
0

我是AngularJS新手。AngularJS:呈現部分動態屬性

我正在尋找加載partials時傳遞數據。

我想要一個允許動態屬性的指令。例如,在對象「公司」是在範圍限定的視圖我可以有:

<partial url:"employees/index.html" query_string: "Fun House Inc" employees="company.employees"> 

並且在對象「僱員」的定義的圖:

<partial url:"employees/show.html" employee="employee"> 

下面是我寫的一個指令(在coffeescript中)幾乎可以工作。在上面的例子中,query_string屬性被傳遞(感謝鏈接函數中的作用域[k] = v),但employees屬性不會傳遞字符串而不是被評估的對象。

App.directive "partial", -> 
    restrict: "E" 

    scope: 
    attribute: "@" 
    expression: "&" 
    model: "=" 
    array: "=" 
    data: "=" 

    templateUrl: (el,attrs)-> 
    "/assets/partials/" + attrs.url 

    link: (scope,el,attrs)-> 
    for k, v of attrs 
     scope[k] = v if (k[0] != "$" && !scope[k]?) 

在這個指令我已經定義的數組,模型和數據,以便我可以做這樣的事情

<partial url:"employees/index.html" query_name: "Fun House Inc" array="company.employees"> 
在我的觀點

<partial url:"employees/show.html" model="employee"> 

在我的問題破解。這就是說我對這個解決方案並不滿意,我很驚訝沒有現成的解決方案。我是否全部錯了?有沒有更好的方法來做到這一點,或者一種方法來解決我的指令,使其按照我想要的方式工作?

回答

0

因此,基本上提出的是一種爲特定視圖初始化數據的方法。如果是這樣的話,真的應該爲每個視圖指定一個不同的控制器。這正是Angular官方教程所採用的方法。我建議看看routing(定義分配給這些路徑的模板路徑和控制器)和custom services(從外部源獲取數據,然後初始化兩個獨立控制器的$ scope變量)的教程章節。你所描述的內容是作爲一個基本的應用程序體系結構內置到Angular中的,我建議不要試圖重複Angular已經處理好的內容。

+0

感謝您的鏈接。我不確定他們是我在找什麼。我想像一個單一的視圖,其中有幾個部分加載到它。我來自一個rails背景,並且想要像我使用rails一樣構造我的代碼(**也許這是錯誤的方法?**)。爲了讓你知道我要去哪裏...我有一個複雜的模式ModelA has_many ModelB's has_many ModelC's has_one ModelD等等。我想創建一個表單,這將允許我在單個頁面上創建/編輯整個樹(ModelA及其所有的子/孫)。 – brook

+0

Gotcha。它似乎在網站上有類似的問題,例如http://stackoverflow.com/questions/13422966/how-to-specify-model-to-a-nginclude-directive-in-angularjs。 – user3043124

+0

這是非常接近 - 有很多類似的問題,但我還沒有找到任何處理我的要求:templateUrl的動態url(我的指令解決了這個問題),動態數據都作爲字符串傳遞(如「query_string 「上面是我的指令),以及需要處理的對象(例如」company.employees「,我只能通過明確命名參數,如**數組**和**數據** )。再次感謝您的幫助。我沒有通過你發送的教程,雖然它不是我在這裏需要的,但它對我來說會很有用 – brook