У меня есть эта скрипку для простого примера - http://jsfiddle.net/E7crq/4/
var app = angular.module('myapp', []);
app.controller('TestController', function($scope) {
$scope.selectOption = 1;
});
app.directive('selectableOption', function() {
return {
restrict: 'A',
link: function (scope, element, attributes) {
$(element[0]).on('myChange', function() {
scope.$digest();
});
$(element[0]).on('change', function() {
scope.$digest();
});
}
};
});
$('button').on('click', function() {
$('#mainSelect option[value=' + $(this).attr('data-value') + ']').attr('selected', 'selected');
$('#mainSelect').trigger('change');
});
HTML
<div ng-app="myapp">
<div ng-controller="TestController">
<select ng-model="selectOption" id="mainSelect" selectable-option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<div>
Option: {{ selectOption }}
<div>
<button data-value="1" id="btn1">1</button>
<button data-value="2" id="btn2">2</button>
<button data-value="3" id="btn3">3</button>
</div>
</div>
Как это в настоящее время написано, если нажать на любую из 1
, 2
, 3
кнопок, он обновляет область действия и выбранное значение. Если вы измените событие, вызванное последней строкой кода, от 'change'
до 'myChange'
, оно больше не работает.
Я думаю, это потому, что у Angular уже есть обработчик для события change
. Что мне нужно сделать, чтобы сделать событие myChange
работать?
Благодарим за помощь, скрипка - всего лишь пример моей проблемы.Мой проект намного больше, чем тот, и очень тесно связан с плагином jQuery, поэтому я не могу слишком сильно его изменить. –