2013-09-01 43 views
0

我有一個指令,我需要在通過屬性傳遞的位置訪問作用域。從指令中的作用域路徑訪問模型

HTML:

<div my-directive scope-location="settings.main.url"> 
    ... 
</div> 

指令:

link: function(scope, elm, attrs) { 
     // How can I do 
     // scope['settings']['main']['url'] = angular.element(elm).text(); 
     // where "['settings']['main']['url']" comes part from attr "scope-location" 
     // with value "settings.main.url"? 

     scope[attrs.scopeLocation] = angular.element(elm).text(); 
    } 

小提琴:http://jsfiddle.net/GEhSG/3/

回答

0

有三種方法來實現這個

  • 因爲你的指令inher其旗下的父作用域,變量可使用

    scope.settings.main.url

  • 如果不想硬編碼,就可以使用$parse服務,如

    變種位置= $解析(attrs.scopeLocation);

    位置(範圍);

  • 可以創建分離的範圍,並通過在變量在該指令定義的範圍對象,像

    範圍:{ scopeLocation: '=' }

我已創建前兩種方法的小提琴,http://jsfiddle.net/beyND/

+0

非常感謝,第二個完全正確,我需要。 – Delremm