2014-02-10 43 views
0

我想在我的指令中使用屬性的存在(或不存在)作爲布爾值。例如:指令作用域布爾屬性

<foo bar baz></foo> 

凡在我的控制,我有以下:

controller: function($scope, $element) { 
    if $scope.bar === null { 
     alert("Bar Present"); 
    } 
    if $scope.baz === null { 
     alert("Baz Present"); 
    } 
} 

不幸的是在上面的酒吧和巴茲沒有設置在所有在$範圍。我期望在那裏看到一個null或一個明確的'undefined'。但$範圍只是沒有酒吧或baz屬性。

+0

注:我不在乎我有我的控制器或我的鏈接功能做什麼;但我*關心指令的語法。它應該像包含或不包含屬性一樣簡單,而不是將其設置爲空字符串或「true」。我也不是直接訪問$元素上的attrs的巨大粉絲(儘管我目前正在以這種方式解決問題)。 – Crisfole

回答

1

Here is a working code sample for what I think you want

var app = angular.module('app', []); 

app.directive('myDirective', [function(){ 

return { 
    restrict: 'E', 
    template: '<div>directive test</div>', 
    link: function(scope, el, attrs){ 
    if(attrs.bar !== undefined) { el[0].innerText = 'bar'; } 
    if(attrs.baz !== undefined) { el[0].innerText = el[0].innerText + ' baz'; } 
    } 
}; 

}]); 

    <body> 
    <my-directive bar baz></my-directive> 
+0

謝謝。我一直希望只使用控制器的結果,但它有必要在鏈接過程中提前。 – Crisfole

+0

是的,任何觸及html(dom)的東西我都會使用鏈接功能,對於我來說,很難讓我首先放棄'jquery'的做事方式,但角度很值得努力 –

+0

嗯,我真的認爲它像jquery一樣工作......只是沒有意識到我可以通過指令訪問attrs。 – Crisfole