我想rewrite this fiddle作爲指令。這是我第一次使用Angular進行的實驗。我實際上從w3學校得到了這個想法,dom manipulationAngular指令:可切換圖像作爲隔離範圍
我以爲我的小提琴很好寫,但是,在讀完coupling behaviour to a directive may be an anti design pattern後,我又一次茫然了。因此設計一個元素爲
<photo>
<img ng-click="toggleOnOff()" ng-src="{{'togglePhotoSrc()'}}"/>
似乎不推薦。對?
我想解決這個問題作爲一個孤立的範圍。我希望在指令中知道這兩個網址。如果可能的話,我想這樣做,而不使用element.addClass。
設計建議像工作示例一樣受到重視。
編輯:我得到了這個工作,但會很感激意見,尤其是在更好的設計方面!
<body ng-controller="MyCtrl">
<div><pre>State is on = {{isOn}}</pre></div>
<div>
<input type="checkbox" ng-model="isOn" />Switch the light
<a toggle="isOn">
<img ng-src="{{ getToggledUrl() }}">
</a>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>
<script>
angular.module('app', [])
.directive('toggle', function() {
return {
scope: {
toggle: "="
},
link: function($scope, element, attrs) {
element.click(function() {
$scope.$apply(function() {
var src = element.find('img').attr('src');
$scope.toggle = !$scope.toggle
})
})
}
}
})
function MyCtrl($scope) {
$scope.isOn = false;
$scope.onUrl = "http://www.w3schools.com/js/pic_bulbon.gif";
$scope.offUrl = "http://www.w3schools.com/js/pic_bulboff.gif";
//toggle image
$scope.getToggledUrl = function() {
return $scope.isOn ? $scope.onUrl : $scope.offUrl;
};
}
爲什麼在指令中切換類別?此外你是什麼意思你想知道指令內的src?你想通過他們嗎?在任何情況下,如果你想擺脫jQuery,我認爲你的指令中的模板將是角色的一種方式。 – masimplo
toggleClass已移除 - 我的錯誤&&!故意。我原先的想法是將URL封裝在指令中,因爲我認爲隔離範圍用於可重用組件。這是一個錯誤嗎?我只使用jquery導致所有其他嘗試失敗。我從一個模板開始,但如何設計新指令的外觀應該如何。 – scalaGirl