我有一个自定义的角度指令,为了简洁起见我们只需要调用map。角度隔离范围值可以通过“true”或者空值来设置
它具有像这样设置的隔离范围。
scope: {
latitude: '=?',
longitude: '=?',
draggable: '=?'
},
我通常把东西在我的链接功能,设置的范围值是无论什么已经在属性,或默认设置,如果没有已定,因此devoloper可以,如果他们添加拖动=“假”想要,否则我们会自动默认它为true,所以在链接函数中我会有这个。
$scope.draggable = angular.isDefined($scope.draggable) ? $scope.draggable : myDefaults.draggable;
的问题是,我希望所有的以下是有效的用途在HTML
<map draggable></map>
<map draggable="true"></map>
<map draggable="false"></map>
但第一线不会起作用,因为angular.isDefined()是假的。
我应该检查它是否先定义,如果不是,那么使用类似attrs.draggable的东西来查看属性是否存在,然后再回到默认值?
如果是这样,那么还有一个复杂因素,因为我需要将我的代码放在控制器中,而不是链接函数(因为它需要与子指令交谈),并且我无法访问“attrs”或“element “从控制器。
任何帮助将不胜感激。
谢谢,但是对于''这会是真的吗?除非我错了我认为这将是错误的 – jonhobbs
@jonhobbs对于'','$ attrs.draggable'将在'link'函数中未定义,在这种情况下将使用'myDefaults.draggable'。 – Amasa
是的,这就是我的想法。我需要它是真实的,当draggable属性存在但没有设置,这就是为什么我奋斗:) – jonhobbs