2013-03-05 56 views
11

的angularjs代碼:爲什麼我無法獲得自定義指令的屬性值?

app.directive('test', function(){ 
    return { 
    restrict: 'A', 
    scope: { 
     myId: '@' 
    }, 
    link: function(scope) { 
     alert(scope.myId); 
    } 
    } 
}); 

你可以看到有在指令中scope: { myId: '@' }

和HTML代碼:

<div test my-id='123'></div> 

你可以看到我定義了一個my-id='123'

我希望指令將提醒123,但它會提醒undefined。我的錯誤在哪裏?

PS:這裏有一個現場演示:http://plnkr.co/edit/sL69NqWC70Qfwav5feP2?p=preview

回答

11

你需要$observe屬性(爲http://docs.angularjs.org/guide/directive「屬性」一節中所述),以獲得插值屬性的適當的值。

這裏是一個工作普拉克:http://plnkr.co/edit/NtIHmdoO7IAEwE74ifB5?p=preview

這基本上是複製angularjs : logging scope property in directive link function displays undefined的。還應該注意的是,PR https://github.com/angular/angular.js/pull/1555最近已合併,您的搶注者應該在未來版本的AngularJS中不使用$observe而工作。

-

有問題的演示將在最新版本的工作:1.1.3,你可以嘗試(和改變angularjs網址1.1.3)。

+0

它適用於最新版本:1.1.3,謝謝你和PrimosK,這是一個非常令人困惑的問題:) – Freewind 2013-03-05 14:43:22

+1

我已經測試了你的普通工作。測試角1.2.23:「未知提供商:iAttrsProvider」 – BigDong 2015-01-12 14:41:27

相關問題