im новое для углового, и я пытался в течение последних полудня понять это. я был бы рад услышать, что является лучшей практикой для этого случая, так как я пробовал разные подходы к выполнению этого, но я не уверен, какой из них я должен придерживаться.Создание директивы с функцией OnClick (AngularJS)
У меня есть таблица, где каждая содержит директиву: мой сдвиг имеет шаблон:
<shift day={{day}} shift={{shift}} status={{status}}>
<img ng-if="pic==0" ng-src="images\dislikeR.png" class="like">
<img ng-if="pic==1" ng-src="images\likeR.png" class="like">
<img ng-if="pic==2" ng-src="images\mehR.png" class="like">
</shift>
каждый представляет запрос сдвига, где значение может быть 0,1,2 , что означает «нелюбовь» , "like" и "meh".
Я хочу, чтобы это произошло, когда я нажимаю на элемент, он меняет состояния 0-> 1-> 2 соответственно, изменяя атрибут «статус» и отображаемое изображение. так, как я уже пробовал, используя ng-if, как вы можете видеть.
Как бы добавить функцию OnClick в каждый экземпляр директивы? Это моя попытка, но ничего не срабатывает, когда я нажимаю, я попытался заменить «это» на «смену», по-прежнему не повезло.
MyApp.directive('myShift',function(){
return{
restrict: 'A',
scope:{
day: '=',
shift: '=',
status: '=',
pic: "=status"
},
templateUrl: "shift.html",
controller: function($scope, $element) {
$(this).click(function(){
alert("TEST")
if($scope.pic==2)
$scope.pic=0;
else
$scope.pic+=1;
});
}
};
});
UPDATE:
Все работает, но картинка меняется разве, по щелчку я увеличиваю $ scope.status (это приращение я проверил), однако шаблон не обновляется ... не конечно, проблема заключается не только в ng-if, но и в регулярном выражении e, g {{status}} не обновляется. что может быть неправильно: |
App.directive('myShift',function(){
return{
restrict: 'A',
scope:{
day: '=',
shift: '=',
status: '='
},
templateUrl: "shift.html",
controller: function($scope, $element) {
$element.on('click', function(){
if($scope.status==2){
alert($scope.status);
$scope.status=0;
alert($scope.status);
}
else if($scope.status==0){
alert($scope.status);
$scope.status=1;
alert($scope.status);
}
else if($scope.status==1){
alert($scope.status);
$scope.status=2;
alert($scope.status);
}
});
}
};
});
Попробуйте $ element.on ('нажмите', функция() {}); –
'$ scope.pic = $ scope.pic +1% 2' использовать mod, плюс вы можете использовать' $ element.on ('click', function() {}) ' – harishr
, если ваше название директивы ** myShift * * затем используйте не –