Ich möchte einige Angular-aktivierte DOM-Elemente programmgesteuert hinzufügen. Eigentlich muss ich wahrscheinlich benutzerdefinierte Komponenten hinzufügen. Wie kann ich es tun?Wie können Angular-aktivierte Elemente zu DOM hinzugefügt werden?
Hier ist eine triviale Geige um das Problem zu demonstrieren: http://jsfiddle.net/ZJSz4/2/
HTML:
<div ng-app="main">
<div ng-controller="MyCtrl">
<button ng-click="add()" >Add</button>
<div id="container">
<div>{{test}}</div>
</div>
</div>
</div>
JS:
angular.module("main", []).controller("MyCtrl", function($scope) {
$scope.add = function() {
$("#container").append("<div>{{test}}</div>");
};
$scope.test = 'Test Message';
});
Nur für den Fall, ich erwarte, dass es ein div hinzufügen zeigt „Test Nachricht "für jeden Klick - nicht {{test}}.
Warum brauche ich es? Nun, ich hätte gerne ein paar sortierbare Spalten (in jQuery sortierbar) mit Portlets. Ich stelle mir vor, jedes Portlet könnte eine Komponente sein.
Gehe ich auf den falschen Hügel? Was ist der Winkelweg, um das zu lösen?
EDIT: Ich hoffte, dieses simple Beispiel würde nicht auf diese Weise enden, aber wie auch immer. Das ultimative Ziel ist nicht, ein div für jedes Element in einem Array anzuzeigen.
Was ich wirklich will, ist ein komplexerer Controller. Ich brauche einen Portlet-Container mit etwas interessantem Verhalten. Es muss möglicherweise entschieden werden, jedes Portlet in einer anderen Spalte zu platzieren. Es bietet möglicherweise eine Änderung des Layouts und eine angemessene Möglichkeit, Portlets in einem solchen Fall neu zu organisieren. Und so weiter.
haben Sie das Tutorial Online in der Dokumentation durchgehen? Du solltest das zuerst tun. Sie müssen Ihr Modell die Benutzeroberfläche steuern lassen. Wenn Sie mehr "Tests" benötigen, erstellen Sie ein Array von Tests und fügen Sie Elemente hinzu oder entfernen Sie sie. Die Ansicht wird automatisch aktualisiert. – mpm