2014-12-07 46 views
1

我有以下包含在AngularJS指令中的kendoDatePicker;该指令应该显示选择器打开日历,但不是。这段代码有什么问题? This is the plunk如何在AngularJS指令链接中声明Kendo UI对象

HTML:

<dir2></dir2> 

的Javascript:

var app = angular.module("app", [ "kendo.directives" ]); 

    function MyCtrl($scope) { 

} 



app.directive('dir2', function() { 

    var directive = {}; 

    directive.restrict = 'A'; 

    directive.template = '<input kendo-date-picker="picker" />'; 

    directive.link = function (scope, element, attrs) { 

     scope.picker.open(); 

    }; 

    return directive; 
}); 

回答

0

这是解决方案:

在那里说

scope.picker.open(); 

应该说

$timeout(function() { 
      scope.picker.open(); 
    }, 1); 
+0

你不需要100毫秒。您只需将其推送到在之前的模板中呈现的下一个摘要循环中。 – PSL 2014-12-27 17:16:52

+0

更改为1毫秒 – ps0604 2014-12-31 14:53:30

0

你应该定义directive.restrict =,而不是 'A' 'E'。

'A'表示属性,'E'表示元素。

app.directive('dir2', function() { 

    var directive = {}; 

    directive.restrict = 'E'; 

    directive.template = '<input kendo-date-picker="picker" />'; 

    directive.link = function (scope, element, attrs) { 

     scope.picker.open(); 

    }; 

    return directive; 
}); 
+0

抱歉...固定它,但它仍然没有工作,我得到'无法读取未定义的属性'open'[见plunk](http://plnkr.co/edit/RfHQqDv8boJJrFSpbW5H?p=preview) – ps0604 2014-12-07 13:17:34

+0

什么是试图打开的scope.picker.open()? – user3063182 2014-12-07 13:23:24

+0

这只是一个例子。 scope.picker.open()应该打开日期选择的日历。我的问题是,scope.picker是未定义的,我无法获得指令中的对象句柄。 – ps0604 2014-12-07 13:27:39

相关问题