[英]angular directive with ng-model not binding
我创建了一个名为<form-field>
非常简单的指令,我正在尝试将ng-model绑定到该指令。 我已经将示例分解为最简单的用例,
我已经包含了控制器,以及带有HTML的指令。 我已经看到了许多require:ngModel
的示例require:ngModel
,然后在link:
内部执行了操作link:
但所有这些示例仅适用于dom操作,或者例如不保存值的增量
angular.module('taskApp', []) .controller('taskController', function($scope) { $scope.taskData = {}; $scope.save = function(taskData) { $scope.taskData = angular.copy(taskData); }; }) .directive('formField', function($timeout) { var template = '<div class="form-group" ng-switch="element">' + '<input ng-switch-when="input" ng-model="ngModel" name="{{field}}">' + '<textarea ng-switch-when="textarea" ng-model="ngModel" name="{{field}}"></textarea>' + '</div>'; return { restrict: 'EA', template: template, replace: true, scope: { ngModel: '=', field: '@', live: '@', element: '@' }, link: function($scope, element, attr) { } }; });
<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.23/angular.min.js"></script> <body ng-app="taskApp" ng-controller="taskController"> <form name='taskForm' novalidate> <form-field element='input' live='false' field="title" ng-model="taskData.title"></form-field> <form-field element='textarea' live='false' field="notes" ng-model="taskData.notes"></form-field> <button type="submit" ng-click="save(taskData)">save</button> </form> <br/> <pre>{{taskData | json}}</pre> </body>
指令中的ngModel
仍然引用内部隔离范围。 您可以使用$parent.ngModel
来访问外部模型。
var template = '<div class="form-group" ng-switch="element">' +
'<input ng-switch-when="input" ng-model="$parent.ngModel" name="{{field}}">' +
'<textarea ng-switch-when="textarea" ng-model="$parent.ngModel" name="{{field}}"></textarea>' +
'</div>';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.