2014-09-11 11 views
15

Ich möchte einen Standardwert für den Bereich festlegen, der von ng-bind aufgenommen wird. Ich bin dieses gerne tun:Setze den Standardwert auf ng-bind in HTML

<button>Show <span data-ng-bind="data.text" data-ng-init="data.text = 'All';"></span> Names</button> 

In diesem Beispiel wird die Spanne auf innerHTML- gesetzt = ‚Alle‘, wenn die Seite geladen wird.

Aber ich hatte gehofft, es könnte ein Weg sein, dies zu tun, ohne die Verwendung von ng-init zu erfordern, vielleicht so etwas wie:

<button>Show <span data-ng-bind="data.text = 'All';"></span> Names</button> 
+5

'{data.text || "Alle"}} '(wenn Sie kein Problem haben, sich von 'ng-bind' zu entfernen) – tymeJV

Antwort

15

In Ihrem Controller:

$scope.data = {}; 
$scope.data.text = "All"; 

Ihr Markup:

<button>Show <span data-ng-bind="data.text"></span> Names</button> 

Oder, wenn Sie wollen um den Controller-Code zu überspringen (mit freundlicher Genehmigung von Kohjah Breese 'Kommentar):

<button>Show <span data-ng-bind="data.text || 'All'"></span> Names</button> 

Vermutlich wird es an anderer Stelle in Ihrem Controller Code geben, der diesen Wert umschaltet, aber für die Zwecke der Initialisierung sollte das tun.

EDIT: Alternativ kann, wie tymeJV in den Kommentaren weist darauf hin (ng-Mantel gegeben, so {{}} Syntax nicht für Benutzer nicht angezeigt):

<button>Show <span ng-cloak>{{data.text || "All"}}</span> Names</button> 
+1

Das funktioniert auch, was ich suche:

+0

Für das, was es wert ist, verwendet der codeschool.com-Anfangskurs (der ausgezeichnet ist, und ich werde nicht bezahlt, um das usw. zu sagen),' this' anstelle von '$ scope', aber Ich schätze, es ist ziemlich üblich, das zu tun, vielleicht benutzen sie es im nächsten Kurs – MrBoJangles

2

von angularjs doc:

Die einzige angemessene Nutzung of ngInit dient zum Aliasing spezieller Eigenschaften von ngRepeat [...] Neben diesem Fall sollten Sie Controller anstelle von ngInit verwenden, um Werte für einen Bereich zu initialisieren.

So schätze Initialisierung i in Ihrem Controller data.text ist in Ordnung für AngularJS

2

Der || Operator funktioniert auch in ngBind wie in reines JavaScript:

<span ng-bind="myVariable || 'My default value'"></span> 

Diese Ausgänge myVariable wenn die Variable gefüllt ist, da sonst die alternative 'My default value' verwendet wird.

Verwandte Themen