das Problem ist mit der Funktion showEdit()
.
Von Ihrer Geige Sie haben:
function showEdit() {
return $scope.startEdit && !$scope.startAdd;
}
Wo startEdit
und startAdd
wie definiert sind:
function startAdd() {
$scope.addBookmark = true;
$scope.editBookmark = false;
}
function startEdit() {
$scope.editBookmark = true;
$scope.addBookmark = false;
}
Wenn Ihr ng-wenn Anrufe showEdit()
es $scope.startEdit && !$scope.startAdd;
jedoch zurück, $scope.startEdit
und $scope.startAdd
sind Funktionen, also werden sie "truthy" (dh evaluat e zu true
in einem booleschen Ausdruck). Daher wird der boolesche Ausdruck immer als false
ausgewertet (und Ihr DIV bleibt verborgen).
Siehe unten:
$scope.startEdit && !$scope.startAdd;
true && !true
true && false
false
Es sieht aus wie Sie etwas konzeptionell mit fehlenden sind entweder Funktionen oder mit Auswertung Booleschen Ausdrücken aufrufen.
Wenn Sie eine JavaScript-Funktion aufrufen möchten, müssen Sie dem Namen der Funktion in Klammern folgen, genau wie bei Ihrem ng-if="showEdit()"
-Block.
Und falls $scope.showEdit()
gemeint ist startAdd()
und startEdit()
zu nennen, sollten Sie etwas tun:
function showEdit() {
return $scope.startEdit() && !$scope.startAdd();
}
Sie noch ein Problem haben würde, aber, wie startEdit()
und startAdd()
nichts zurückgeben, und würde daher zu undefined
auswerten.
Wenn Sie Ihre showEdit()
-Funktion wie oben beschrieben bearbeiten und startEdit()
und einen booleschen Ausdruck zurückgeben, sollten Sie gut gehen.
Sie können es in der Geige sehen .. das ist der code: \t \t 'funktion showEdit() { \t \t \t zurück $ s cope.startEdit &&! $ scope.startAdd; \t \t} ' – paolopolix
Wo sind die Init-Werte von z. '$ scope.startEdit = startEdit', wo ist StartEdit definiert? –
Ihre Funktionen geben keinen Wert zurück, weshalb Sie immer falsch angezeigt werden. –