gpt4 book ai didi

javascript - 使用指令将 ngModel 添加到 Angular 日期选择器输入

转载 作者:行者123 更新时间:2023-11-28 01:28:14 25 4
gpt4 key购买 nike

我正在尝试创建一个使用包含属性和验证等的架构对象生成的 ui。因此,我需要使用指令在我的 ui 控件上设置 ngModel。 ngModel 的值是一个字符串,表示范围内架构对象的属性路径。

我可以将其用于标准输入,但是当使用 Angular ui datepicker 时,我收到以下错误。

Error: [$compile:ctreq] Controller 'ngModel', required by directive 'myModel', can't be found!
http://errors.angularjs.org/1.2.10/$compile/ctreq?p0=ngModel&p1=myModel
at http://localhost:3000/javascripts/angular.js:78:20
at getControllers (http://localhost:3000/javascripts/angular.js:6054:39)
at nodeLinkFn (http://localhost:3000/javascripts/angular.js:6225:55)
at compositeLinkFn (http://localhost:3000/javascripts/angular.js:5634:37)
at compositeLinkFn (http://localhost:3000/javascripts/angular.js:5637:33)
at compositeLinkFn (http://localhost:3000/javascripts/angular.js:5637:33)
at publicLinkFn (http://localhost:3000/javascripts/angular.js:5539:46)
at boundTranscludeFn (http://localhost:3000/javascripts/angular.js:5653:37)
at controllersBoundTransclude (http://localhost:3000/javascripts/angular.js:6245:36)
at Object.ngIfWatchAction [as fn] (http://localhost:3000/javascripts/angular.js:18316:29)

<input class="form-control" datepicker-popup="dd-MMM-yyyy" my-model="" is open="property.calOpen" close-text="Close" ng-model="editModel.Person.Detail.DateOfBirth">

我的指令如下。

angular.module('MyDirectives',[])
.directive('myModel', function($compile , $timeout) {
return {
restrict: 'A',
priority:0,

link: function(scope,element, attr) {

if(angular.isDefined(attr.ngModel))return;
var field = scope.path ? scope.path + '.' + scope.key : scope.key;
attr.$set("ngModel", "editModel." + field);

console.log("in directive");
$timeout(function(){
$compile(element)(scope);
});
}
};

由于 ngModel 的值存在于范围内,我相信我需要链接函数而不是编译。我尝试将 Require: ?ngModel 添加到指令中,这没有什么区别。还尝试增加优先级,但这将错误更改为错误:[$compile:ctreq] 找不到指令“input”所需的 Controller “ngModel”!

如果我删除 $compile(element)(scope) 周围的 $timeout(function(){} ,2 个弹出日历会重叠。这在导航时很明显月。

任何想法

更新:请参阅链接 plkr

最佳答案

您需要创建一个新的双向绑定(bind)到本地作用域变量(作用域:true)。
使用 $parse 在路径中定位属性。

参见updated Plunker

关于javascript - 使用指令将 ngModel 添加到 Angular 日期选择器输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22451503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com