如何正确$解析循环中的元素?

时间:2017-09-14 09:11:04

标签: angularjs

我正在尝试解析由$ index索引的循环的一些字符串并将它们用于datepickers,所以我最终使用$ parse而不是$ eval。

在调试期间,我总是得到这个错误

$parse is not a function

这是指令:

.directive('dispatcherDate', function (DISPATCHER_BROADCAST,$parse) {
            return {
              restrict: 'A',
              require: "ngModel",
              link : function(scope, elem, attrs,ngModelCtrl,$parse) {
                  var attributes = attrs;
                      scope.$on(DISPATCHER_BROADCAST.stuffLoaded,function(){
                            var parent = $(elem).parent();
                            var dtp = parent.datetimepicker({
                                format: "DD-MM-YYYY HH:mm:ss",
                                useCurrent: false,
                                showTodayButton: false,
                                defaultDate :$parse(attributes.ngModel),
                            });
                            dtp.on("dp.change", function (e) {
                                ngModelCtrl.$setViewValue(moment(e.date).format("DD-MM-YYYY HH:mm:ss"));
                                scope.$apply();
                            });
                      });
              }
            };
          }) 

我在如何使用$ parse时出错了?是否正确使用$ parse而不是$ eval更正?

1 个答案:

答案 0 :(得分:1)

通常,您可以访问ngModel使用ngModelCtrl.$viewValue指向的值。

但是如果您想使用$parse,请从链接功能参数中删除$parse。您正在为它创建一个新变量,但它没有在那里注入。在声明指令时,它会被注入:

.directive('dispatcherDate', function (DISPATCHER_BROADCAST,$parse) {

另外,解析范围:

defaultDate: $parse(attributes.ngModel)(scope)