2017-11-28 3 views
1

Ich möchte Container dynamisch ändern, nachdem ich auf einen Radiobutton geklickt habe. Ich weiß, dass ich es leicht mit einem ng-Modell und Wert machen kann. Hier ist ein JSFiddle: http://jsfiddle.net/vDTRp/2/ Es funktioniert gut, wenn Sie einen kleinen Container oder nur etwas Text haben. Aber wie kann ich das mit einem riesigen Container in einem Bereich tun?Container dynamisch ändern, wenn Sie auf Radiobutton klicken

function MyCtrl($scope) { 
    $scope.value[0]='<div>big container when clicking radiobutton 1</div>' 
    $scope.value[1]='<div>big container when clicking radiobutton 2</div>' 
    $scope.value[2]='<div>big container when clicking radiobutton 3</div>' 
} 

$ scope.value [0] bekam den Behälter meines Radiobutton 1, $ scope.value [1] erhielt den Behälter meines Radiobutton 2 und $ scope.value [2] bekam den Behälter meiner RadioButton- 3.

Was sollte der HTML das dynamisch tun? (Durch 'dynamisch' bedeutet das Klicken auf einen Radiobutton ändert den Container als das Beispiel, das in der jfiddle gezeigt wird.)

Vielen Dank!

+0

ändern, was das Problem mit sehr groß ist Behälter? Du hast es nicht angegeben. –

+1

Ich würde ng-switch verwenden und Vorlagenlogik in Vorlagen behalten und nicht in js-Code einfügen. – pegla

+0

Das ist eine gute Idee, ich kannte diese Direktive nicht! Vielen Dank –

Antwort

1

var myApp = angular.module('myApp',[]); 
 

 
function MyCtrl($scope) { 
 
    $scope.number = '0'; 
 
    $scope.value = []; 
 
    \t $scope.value[0]='<div>big container when clicking radiobutton 1</div>'; 
 
    $scope.value[1]='<div>big container when clicking radiobutton 2</div>'; 
 
    $scope.value[2]='<div>big container when clicking radiobutton 3</div>'; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script> 
 
<div ng-app="myApp"> 
 
<div ng-controller="MyCtrl"> 
 
<input type="radio" ng-model="number" value="0"> 
 
<input type="radio" ng-model="number" value="1"> 
 
<input type="radio" ng-model="number" value="2">  
 
<hr> 
 
{{value[number]}} 
 
</div> 
 
</div>

Sie mit ausblenden einblenden Container auf ausgewählten radiobutton tun können, wie diese

<div ng-controller="MyCtrl"> 
    <input type="radio" ng-model="number" value="0"> 
    <input type="radio" ng-model="number" value="1"> 
    <input type="radio" ng-model="number" value="2">  
    <hr> 
    {{value[number]}} 
    <div ng-bind-html-unsafe="value[number]"></div> <--if you want bind html than use ng-bind-html-unsafe 
</div> 

Und Ihre Controller wie diese

function MyCtrl($scope) { 
    $scope.number = '0'; 
    $scope.value = []; 
    $scope.value[0]='<div>big container when clicking radiobutton 1</div>' 
    $scope.value[1]='<div>big container when clicking radiobutton 2</div>' 
    $scope.value[2]='<div>big container when clicking radiobutton 3</div>' 
    $scope.$watch('value', function(value) { 
     console.log(value); 
    }); 
} 
Verwandte Themen