2014-01-21 45 views
1

我已經定義了一個自定義複選框指令,並且我想從另一個屬性中訪問一個屬性。AngularJS:從另一個屬性訪問指令的屬性

請注意在下面的例子中disabledng-class屬性:

<checkbox ng-model="isChecked" 
      disabled="<some angular expression>" 
      ng-class="{'fresh': isChecked && !disabled}"/> 

此外,該指令的範圍如下:

scope: { 
    ngModel: "=", 
    disabled: "=", 
} 

這可能嗎?

編輯:

爲了使我的問題更加清晰:在this fiddle我說明我多麼想重用屬性disabledng-class屬性。

在撥弄,這永遠不會工作,因爲disabledng-class屬性始終是假的(它不是(或複選框禁用的屬性從指示的範圍從目前的殘疾人),而是「禁用」範圍)。

+0

在模板中,您可以像{{arrributename}}那樣訪問artribute。在鏈接功能中,您可以使用scope.attributename訪問它。對於屬性訪問使用「@」不是「=」 – surendar

+0

如果是這樣,上面的例子不應該工作很好嗎? –

+0

通過範圍訪問屬性值沒有問題。這裏是一個示例:http://jsfiddle.net/eFN7Q/1/ – Pythonic

回答

0

正如directive表達的評價中提到可以通過ngAttr attribute bindings可能@surendar意味着

scope: { 
    ngModel: "=", 
    disabled: "@" 
} 

ng-class將與模型值進行評估isChecked

編輯

看來你想什麼做不可能!

disabled="<some angular expression>" 

因爲disabledattribute的指令,並同時它model指令的內部元素

ng-class="{'fresh': isChecked && !disabled}" 

這裏ng-class期待isCheckeddisabled是模型屬性。你可以做其他的事情,如

ng-class="{'fresh': isChecked && (expression)}" // you can put expression instead of disabled 

否則你需要鏈接/控制器。

+0

我看不出這怎麼解決我的問題......我知道什麼屬性綁定是,但我想在模板中執行ngClass的邏輯,而不是在鏈接/控制器功能中。 –

+0

感謝您的編輯。現在我按照你所說的將表達式放在代碼中兩次,但我認爲有一種更好的方式,重用disable屬性看起來就像是一種解決方案。 –