Попытка написать пользовательскую директиву, что кнопка отображения в качестве дня в неделюпользовательская директива кнопка подсветки
как показано на рисунке ниже.
Это то, что я до сих пор и имеют проблемы связывания с нг-модель обратно директиву.
Первоначально кнопка белая и в зависимости от модели в настоящее время передаются в виде массива
$scope.selectedDays = ["mon", "wed"];
Для приведенного выше примера понедельник и среда должны быть выделены серым цветом. все остальные должны быть белыми.
Любая идея?
app.directive('daysDirective', function ($compile) {
var days = [
{ key: "sun", display: "S"},
{ key: "mon", display: "M"},
{ key: "tue", display: "T"},
{ key: "wed", display: "W"},
{ key: "thurs", display: "T"},
{ key: "fri", display: "F"},
{ key: "sat", display: "S"}
];
//var template =
// ' <div class="input-group">'+
// ' <button ng-repeat="day in days track by $index" ng-class="{\'btn btn-sm btn-white\': day.selected, \'btn btn-sm btn-grey\': !day.selected}">{{ day.display }}</button>' +
// ' </div>';
var template =
' <div class="input-group">'+
' <button ng-class="{\'btn btn-sm btn-white\': day.selected, \'btn btn-sm btn-grey\': !day.selected}">S</button>' +
' <button ng-class="{\'btn btn-sm btn-white\': day.selected, \'btn btn-sm btn-grey\': !day.selected}">M</button>' +
' <button ng-class="{\'btn btn-sm btn-white\': day.selected, \'btn btn-sm btn-grey\': !day.selected}">T</button>' +
' <button ng-class="{\'btn btn-sm btn-white\': day.selected, \'btn btn-sm btn-grey\': !day.selected}">W</button>' +
' <button ng-class="{\'btn btn-sm btn-white\': day.selected, \'btn btn-sm btn-grey\': !day.selected}">T</button>' +
' <button ng-class="{\'btn btn-sm btn-white\': day.selected, \'btn btn-sm btn-grey\': !day.selected}">F</button>' +
' <button ng-class="{\'btn btn-sm btn-white\': day.selected, \'btn btn-sm btn-grey\': !day.selected}">S</button>' +
' </div>';
var linker = function (scope, element, attrs, ngModelCtrl) {
element.html(template).show();
$compile(element.contents())(scope);
};
return {
require: 'ngModel',
link: linker,
replace: true,
restrict: 'EA',
scope: {
model: '=ngModel'
},
controller: ['$scope', function ($scope) {
$scope.days = days;
var model = $scope.model;
//$scope.selected = model[]
}]
};
});
Благодаря Джо! модель также должна быть обновлена с помощью массива выбранных пользователем дней. Как вы можете это сделать, не используя часы на модели? – ove
Вы уже это сделали. Просто обновите массив, который вы передаете в параметр «model». Это сработает. –
Возможно, я не правильно перефразировал, я хочу $ scope.selectedDays быть обновленным с выбранным пользователем пользователем днем. если пользователь выбирает mon, tue, wed then scope.selectedDays = ["mon", "tue", "wed"]; Я храню scope.selectedDays. – ove