在 AngularJS 中使用 KendoUI 方法

Using KendoUI methods in AngularJS

如何在 AngularJS 应用程序中使用 KendoUI 小部件提供的方法? 我知道,对于小部件的配置,指令属性通过 k- 前缀在标记中使用。 但是在文档中,有很多分配给小部件的方法。 例如 kendo-mobile-tab-strip 小部件有一个 switchTo 方法。

示例显示如何使用它(没有 angular)

var app = new kendo.mobile.Application();
function onClick() {
  var tabstrip = app.view().footer.find(".km-tabstrip").data("kendoMobileTabStrip");
  tabstrip.switchTo("#bar"); //activate "bar" tab
}

当我只使用 <kendo-mobile-application> 指令初始化应用程序时,如何访问 Angular 控制器中的 app 变量?

是否有任何其他(正确的)方法来使用小部件方法? 我很好奇这里的最佳实践,因为这一切感觉不像 Angular...

当您向小部件的属性(或 k-scope-field 属性)提供值时,该值将成为范围 属性 的名称,您可以将其用于 get a reference to the widget

HTML

<div ng-controller="MainCtrl">
    <div kendo-grid="myGrid"></div>
    <!-- or -->
    <div kendo-grid k-scope-field="myGrid"></div>
</div>

控制器

angular.controller("MainCtrl", function($scope) {
    // the widget is accessible from the scope
    $scope.myGrid.doSomething();
});

你是对的,在小部件上调用方法不像 Angular。所以在大多数情况下你想把它放在你自己的指令中,包装 kendo 的小部件。这使您可以将 DOM 特定代码保留在应用程序控制器之外,并包含在它们所属的指令中。

HTML

<div ng-controller="MainCtrl">
    <my-grid-directive></my-grid-directive>
</div>

指令

angular.controller("myGridDirective", function() {
    return {
        template: "<div kendo-grid='myGrid'></div>",
        link: function (scope, element, attrs) {
            scope.myGrid.doSomething();
        }
    };
});

我从不使用 kendo 移动应用程序,因此它可能会有所不同,但通常通过在下面的每个示例中的 kendo 属性中添加标识符来访问 $scope 对象中的 kendo 对象.

<div ng-app="app" ng-controller="MyCtrl">
 <input kendo-datepicker="datePicker" k-on-change="onChange()">
</div>
<script>
   angular.module("app", [ "kendo.directives" ]).controller("MyCtrl", function($scope) {
     $scope.onChange = function() {
   alert($scope.datePicker.value());
   };
 });
</script>

http://docs.telerik.com/kendo-ui/AngularJS/introduction#getting-widget-references