2013-02-20 74 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