大佬教程收集整理的这篇文章主要介绍了angularjs – 我可以使用具有隔离范围的ng模型吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
angular.module("ExperimentsModule",[]) .directive("uidatetiR_246_11845@e",function () { return { reStrict: 'EA',replace: true,template: '<div class="ui-datetiR_246_11845@e">' + '<input type="text" ng-model="_date" class="date">' + '<input type="number" ng-model="_hours" min="0" max="23" class="hours">' + '<input type="number" ng-model="_minutes" min="0" max="59" class="minutes">' + '<br />Child datetiR_246_11845@e1: {{datetiR_246_11845@e1}}' + '</div>',require: 'ngModel',scope: true,link: function (scope,element,attrs,ngModelCtrl) { var elDate = element.find('input.date'); ngModelCtrl.$render = function () { var date = new Date(ngModelCtrl.$viewvalue); var fillNull = function (num) { if (num < 10) return '0' + num; return num; }; scope._date = fillNull(date.getDate()) + '.' + fillNull(date.getMonth() + 1) + '.' + date.getFullYear(); scope._hours = date.getHours(); scope._minutes = date.getminutes(); }; elDate.datepicker({ dateFormat: 'dd.mm.yy',onSELEct: function (value,picker) { scope._date = value; scope.$apply(); } }); var watchExpr = function () { var res = scope.$eval('_date').split('.'); if (res.length == 3) return new Date(res[2],res[1] - 1,res[0],scope.$eval('_hours'),scope.$eval('_minutes')); return 0; }; scope.$watch(watchExpr,function (newvalue) { ngModelCtrl.$setViewValue(newvalue); },truE); } }; }); function TESTController($scopE) { $scope.datetiR_246_11845@e1 = new Date(); }
关于github:https://github.com/andreev-artem/angular_experiments/tree/master/ui-datetime
据我所知 – 创建新组件时的最佳做法是使用隔离镜像。
当我试图使用孤立的范围 – 没有什么工作。 ngModel。$ viewValue === undefined。
当我尝试使用新的范围(我的例子,不是很好的变体imho) – ngModel在新创建的范围上使用值。
当然,我可以通过“= expression”(example)创建具有孤立范围的指令并使用NgModel值。但是我认为使用NgModelController是一个更好的做法。
我的问题:
所以,看起来ngModelController可以和隔离范围一起使用。
这是一个较小的小提琴,它在HTML /视图中使用Ng-model,一个隔离范围和$ setViewValue在链接功能:fiddle中。
更新:我刚刚发现一些相当有趣的东西:如果隔离范围属性被赋予不同的名称 – 例如,说dt1而不是datetiR_246_11845@e1 – 范围:{dt1:’= ngModel’} – 它不再有效!我猜测当我们要求:’ngModel’时,ngModelController使用HTML /视图中的名称(即ng模型属性值)在隔离范围上创建一个属性。所以如果我们在对象散列中指定相同的名称,一切都很好。但是,如果我们指定了一个不同的名称,那么新的scope属性(例如,dt1)不与我们需要的ngModelController相关联。
以上是大佬教程为你收集整理的angularjs – 我可以使用具有隔离范围的ng模型吗?全部内容,希望文章能够帮你解决angularjs – 我可以使用具有隔离范围的ng模型吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。