Ich habe eine Richtlinie, die eine Änderung in der Scope-Element sections.data
, die ich später assign
, um die Daten auf UI zu aktualisieren. Dieser Ansatz funktioniert jedoch in der Funktion change_subnav
, aber nicht im Switch-Fall (die Kommentare wurden dem Code hinzugefügt). Warum passiert dies? Der Code für diese Änderung ist gleich. Ich schätze jede Hilfe hier. Bitte lassen Sie mich wissen, wenn ich weitere Informationen hinzufügen muss.Zuordnung zu Bereich funktioniert nicht in der Direktive
Plunker-https://embed.plnkr.co/wmoJcQ/
.directive('selectSubnav', function ($parse) {
return {
restrict: 'A',
link: function (scope, element, attr) {
var change_subnav = function (subnav) {
if (scope.active_tab == 'user_exercises') {
var sections = {};
sections[subnav] = scope[scope.active_tab][subnav];
// this works
scope.$apply(function() {
$parse('sections.data').assign(scope.$parent, sections);
});
} else {
}
};
$(element).on('click', function() {
$(element).parent().children().removeClass('active');
$(element).addClass('active');
switch (attr.selectSubnav) {
case 'All':
// this doesn't work
scope.$apply(function() {
$parse('sections.data').assign(scope.$parent, scope[scope.active_tab]);
console.log(scope.sections.data);
});
break;
default:
change_subnav(attr.selectSubnav);
break;
}
});
}
}
})
UPDATE
.directive('selectSubnav', function ($parse) {
return {
restrict: 'A',
link: function (scope, element, attr) {
var currentScope = scope;
var change_subnav = function (subnav) {
if (scope.active_tab == 'user_exercises') {
var sections = {};
sections[subnav] = scope[scope.active_tab][subnav];
} else {
}
return sections;
};
$(element).on('click', function() {
$(element).parent().children().removeClass('active');
$(element).addClass('active');
var sections;
switch (attr.selectSubnav) {
case 'All':
// this doesn't work
sections = currentScope[currentScope.active_tab];
break;
default:
sections = change_subnav(attr.selectSubnav);
break;
}
currentScope.$apply(function() {
$parse('sections.data').assign(currentScope.$parent, sections);
});
});
}
}
})
A Plunker mit Ihrem HTML-und Controller-Code für Kontext nützlich sein würde. – jbrown
Hallo, ich habe den Plunker hinzugefügt. Versucht, das Szenario so weit wie möglich zu replizieren –