2015-06-10 34 views
1

我試圖找出何時以及如何使用link功能的角度指令。角度理解鏈接功能

說我有以下指令:

app.directive("lbArticle", function() { 
    return { 
     restrict : "E", 
     templateUrl: 'tpl/directives/information/article.html', 
     scope: { 
      article: '=' 
     }, 
     link: function(scope,element, attr){ 
      scope.info = attr.article; 
     } 
    }; 
}); 

現在傳遞對象到HTML的article附件

<lb-article article='{{myObject}}'> </lb-article> 

當這種情況發生,並指令呈現它應該設置一個叫做變量info等於myObject

因此,如果myObject看起來像這樣:

myObject{name: 'Hello', created: '2015-04-04'; } 

那麼下面應該顯示這些變量:

我的指令HTML

<span class="block text-ellipsis">{{info.name}}</span> 
    <small class="text-muted">{{info.created | fromNow}}</small> 

然而,這並不正常工作?

據我可以閱讀的文檔link function應該用於DOM操縱,也用於設置可能在實際指令之前呈現的變量?

+0

另外,該行'scope.info = attr.article;'沒有真正使用,因爲你已經在該範圍 – Valdas

+0

你爲什麼在這個例子中使用鏈接'article'?範圍:{...}已使文章可供模板使用 – LionC

回答

2

此行scope.info = attr.article;是多餘的,因爲您可以通過雙向綁定=article訪問article。因此,您可以在模板中將info的所有匹配項替換爲article,因爲這在範圍內可用。您還需要從<lb-article article='{{myObject}}'> </lb-article>中刪除大括號,以便雙向綁定工作,因爲您需要對該對象的引用。

有一個很好的,很容易遵循article指令,其中涵蓋了大多數這些概念(鏈接/ complile函數,兩/單向綁定,範圍等)。

0

使用

<lb-article article='myObject'> </lb-article> 

,現在嘗試。