Próbuję dynamicznie generować dane wejściowe formularzy i powiązane z nimi menu akcji oparte na modelu. Jestem w stanie przekazać pole do użycia i menu, ale nie mogę się dowiedzieć, jak skonfigurować ng-click, aby wywołać odpowiednią funkcję zdefiniowaną w modelu. Zobacz skrzypce: http://jsfiddle.net/ahonaker/nkuDW/Jak dynamicznie definiować funkcję do wywołania za pomocą polecenia ng-click w szablonie dyrektywy AngularJS
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>
Każda pomoc będzie mile widziane. Spróbowałem następujących podejść click-in w dyrektywie
Co robię źle? Czy istnieje lepszy sposób to zrobić (struktura menu, w tym funkcje, które należy wywołać, musi pochodzić z modelu, aby móc utworzyć generyczną zdolność generowania formularzy).
dzięki, że kolega pracował dla mnie. – Fabii