2016-04-12 61 views
2

下面是我使用角度呈現不工作後,我用一個AfterRender回調

App.directive('afterRender', ['$timeout', function ($timeout) { 
    var def = { 
     restrict: 'A', 
     terminal: true, 
     transclude: false, 
     link: function (scope, element, attrs) { 
      $timeout(scope.$eval(attrs.afterRender), 0); 
     } 
    }; 
    return def; 
}]); 

當前的代碼,我這樣稱呼它

after-render="disableFullPage" 

現在的問題是我對當前面臨代碼是disableFullPage函數被調用罰款。但角度不是呈現任何數據。所以,如果我把

{{message}} 

這是不呈現。此外,如果我刪除後渲染,渲染工作正常。有人可以幫我解決我做錯了什麼,如果可能的話,請編輯上面的代碼,並提供一個簡短的描述,以便我更好地理解,因爲我相對較新的角度。

+1

任何特別的原因:TRUE'?這將禁用對指令/表達式的進一步評估。 – Josh

+0

@Josh我在這裏是新手。代碼不是我的。這只是廣泛的谷歌搜索。讓我試試假標誌,看看是否有效:) – georoot

+0

@Josh有效。添加一個答案,所以我可以標記它:) – georoot

回答

1

我在這裏看到兩件事。

第一個,您正在設置terminal: true這將阻止進一步解釋指令和表達式。

According to the docs

如果設置爲true,那麼當前的首要任務將是最後一組 指令將執行(在當前優先 任何指令仍將執行作爲執行對相同的優先級順序的未定義爲 )。 請注意,指令模板中使用的表達式和其他指令也將被排除在執行之外。

$parse是要評估你給它當前範圍內的情況下任何表情。這就像你剛剛寫了一行javascript。

在你上面的例子中,after-render="disableFullPage",假設disableFullPage是一個函數,那麼什麼都不會發生。您需要添加括號就像你通常調用該函數:爲什麼你設置`terminial

after-render="disableFullPage()"