Ich versuche, Formulareingaben und ein zugehöriges Aktionsmenü basierend auf dem Modell dynamisch zu generieren. Ich bin in der Lage, das zu verwendende Feld und das Menü zu übergeben, aber ich kann nicht herausfinden, wie man ng-click konfiguriert, um die entsprechende im Modell definierte Funktion aufzurufen. Siehe Geige: http://jsfiddle.net/ahonaker/nkuDW/Wie definiere ich dynamisch eine Funktion zum Aufruf mit ng-Klick in AngularJS Direktive Vorlage
HTML:
var myApp = angular.module('myApp',[]);
myApp.directive('myDirective', function($compile) {
return {
restrict: "E",
replace: true,
scope : {
field: '=',
label: '=',
menu: '='
},
link: function (scope, element, attrs) {
element.html('{{label}}: <input ng-model="field"> <ul ng-repeat="item in menu"<li><a ng-click="item.func">{{item.title}}</a></li></ul>');
$compile(element.contents())(scope);
}
}
});
//myApp.factory('myService', function() {});
function MyCtrl($scope) {
$scope.status = 'You have not picked yet';
$scope.menu = [
{ "title" : "Action 1", "func" : "ActionOne()"},
{ "title" : "Action 2", "func" : "ActionTwo()"},
]
$scope.fieldOne = "I am field 1";
$scope.fieldTwo = "I am field 2";
$scope.ActionOne = function() {
$sopce.status = "You picked Action 1";
}
$scope.ActionOne = function() {
$sopce.status = "You picked Action 2";
}
}
JS:
<div ng-app = "myApp">
<div ng-controller="MyCtrl">
<ul>
<p><my-directive field="fieldOne" label="'Field 1'" menu="menu"></my-directive></p>
<p><my-directive field="fieldTwo" label="'Field 2'" menu="menu"></my-directive></p>
</ul>
Hello, {{status}}!
</div>
</div>
Jede Hilfe würde geschätzt. Ich habe versucht, die folgenden NG-Klick-Ansätze in der Richtlinie
ng-click={{item.func}}
ng-click="item.func"
ng-click="{{item.func}}"
Was mache ich falsch? Oder gibt es einen besseren Weg, dies zu tun (die Menüstruktur einschließlich der anzurufenden Funktionen muss aus dem Modell stammen, damit ich eine generische Formgenerierungsfähigkeit aufbauen kann).
danke Kumpel arbeitete für mich. – Fabii