我正在尝试根据模型动态生成表单输入和关联的操作菜单。我能够传递要使用的字段和菜单,但无法弄清楚如何配置ng- click来调用模型中定义的适当函数。看到小提琴:http : //jsfiddle.net/ahonaker/nkuDW/
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>
任何帮助,将不胜感激。我在指令中尝试了以下ng-click方法
ng-click={{item.func}} ng-click="item.func" ng-click="{{item.func}}"
我究竟做错了什么?还是有更好的方法来做到这一点(包含要调用的功能的菜单结构必须来自模型,以便我构建通用的表单生成功能)。
这是您的固定小提琴:http : //jsfiddle.net/nkuDW/1/
它有很多问题。
$scope
$sopce
$scope.menu
ActionOne
ActionTwo
ng-click="item.func()"
"ActionOne()"
$scope.ActionOne
在进入Angular之前,了解JavaScript的基础可能是一个好主意,因为Angular假定您对语言的细微差别有很好的了解。道格拉斯·克罗克福德(Douglas Crockford)提供了一系列视频,可以帮助您入门。