2015-02-08 121 views
0

我正在構建一個自定義指令,我想從我的控制器訪問隔離的作用域變量。如何從控制器中的指令獲取範圍變量?

下面是HTML的樣子:

<display-user-comment userId="user.id"></display-user-comment> 

這裏是我的指令是什麼樣子:

app.directive('displayUserComment', function() { 
     return { 
      restrict: 'E', 
      templateUrl: 'user_comment.html', 
      scope: { 
       userId: '=' 
      }, 
      controller: 'UserCommentController as userCmtCtrl' 
     }; 
    }) 

這裏是我的控制器是什麼樣子:

app.controller('UserCommentController', [ 
    '$scope', 
    function ($scope) { 

    //How to get access to userId ?? 
}]); 

如何訪問我的控制器中的隔離變量userId?

這裏是plunker網址 http://plnkr.co/edit/9Lh9sPp8o7gZLs1h8RDs?p=preview

+1

'$ scope.user.id'?您將範圍變量('user.id')傳遞給指令。所以它已經在範圍內。 – 2015-02-08 19:20:53

+0

@JBNizet,不是它,它只是在隔離範圍內,我的控制器在我的指令之前得到了實例( – 2015-02-08 19:28:11

+0

這對我沒有多大意義。指令是幹什麼的?它如何顯示用戶註釋如果你不通過它的用戶ID?請提供一個完整的,可重複的例子 – 2015-02-08 19:30:34

回答

2

將userId更改爲html中的user-id。角度「標準化」屬性名稱,因此user-id作爲html中的屬性名稱在您的指令中變爲scope.userId。

欲瞭解更多信息https://docs.angularjs.org/guide/directive

角正常化元素的標籤和屬性的名稱,以確定哪些元素匹配該指令。我們通常通過其區分大小寫的camelCase規範化名稱(例如,ngModel)來引用指令。但是,由於HTML不區分大小寫,所以我們通過小寫形式引用DOM中的指令,通常在DOM元素上使用以短劃線定界的屬性(例如ng-model)。

歸一化處理是如下:

地帶x和從元件/屬性的前DATA-。 將:, - 或_分隔名稱轉換爲camelCase。