2013-02-20 75 views
2

我我寫的通用滑塊指令對我的應用程序,我需要指定例如在HTML代碼中的控制按鈕是這樣的:獲取屬性爲對象屬性到指令AngularJs

<div class="slide-wrapper" data-sample-values="{prevbtn: '.previous', nextbtn: '.next'}"></div> 

我怎樣才能得到這個值作爲對象屬性的指令,例如?

或者也許有另一種方式來做可重複指令?我怎麼能從父範圍中分離出這些元素?

回答

6
myApp.directive('slideWrapper', function() { 
    return { 
     restrict: 'C', 
     scope: { getValues: '&sampleValues' }, // creates an isolate scope 
     link: function(scope, element, attrs) { 
     var values = scope.getValues(); // evaluates expression in context of parent scope 
     ... 
     } 
    } 
}) 
+0

從角文檔:指令'scope'屬性:如果設置爲{}(對象哈希) - 然後創建一個新的 '隔離' 的範圍。 'isolate'範圍與正常範圍不同,因爲它不會從父範圍原型繼承。這在創建可重用組件時非常有用,它不應該意外讀取或修改父範圍中的數據。 http://docs.angularjs.org/guide/directive – 2013-02-21 02:20:22

+0

謝謝一切正常,因爲它是必要的。 – falloff 2013-02-21 13:29:37

+0

爲什麼我不能只使用=綁定的對象表達式?我不斷收到摘要錯誤。但這太棒了! – CMCDragonkai 2013-08-20 14:55:32

0

做這樣的事情:
scope.$watch(function() { return scope.$eval(attrs.sampleValues); }, function (newValue) {...});

+0

對不起,目前尚不清楚這是如何幫助,特別是對於已經選定的答案。你能詳細說明這是什麼或你想要達到什麼目的嗎? – Scott 2014-11-23 22:39:38

+3

通過這種方式,您不需要創建新的隔離範圍以從屬性中獲取值。 – steamrunner 2014-11-26 16:34:11