首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用“控制器作为”语法获得具有AngularJS ui日历的日历对象?

如何使用“控制器作为”语法获得具有AngularJS ui日历的日历对象?
EN

Stack Overflow用户
提问于 2014-03-18 05:09:21
回答 3查看 18.8K关注 0票数 5

我正在使用ui-calendar从角-用户界面.它很好,而且很容易使用。

但是,我无法获得日历对象来调用fullCalendar()并在日历上执行某些函数。

这些文档只给出了使用$scope方法的示例,但我使用的是John爸爸和其他人推荐的controller as vm方法。我试过这样做:

代码语言:javascript
复制
<div data-ng-controller="races as vm">
    <div ui-calendar="vm.calendarConfig" calendar="vm.calendar"></div>
</div>

在比赛负责人中,我有以下几点:

代码语言:javascript
复制
vm = this;
vm.calendarConfig = { header: {...} };
vm.calendar = {};

// somewhere else in a separate click event
vm.calendar.fullCalendar('prev');    // ---> exception

最后一行抛出一个异常Object has no method 'fullCalendar'

只是想知道我缺少了什么,如果有人有一个使用ui-calendarcontroller as vm语法的例子。

下面是柱塞:http://plnkr.co/edit/DPo9meJHx19bREYFLhDh

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-19 14:32:30

谢谢Josh Kurz的帮助。下面是我最后所做的工作:我使用了$scope和controller as方法的混合体。基本上,我在控制器中添加了一个对$scope的依赖。当我需要访问实际的日历控件时,我使用$scope.calendar.fullCalendar('...')。柱塞器已经更新,但是下面是脚本文件中的核心:

代码语言:javascript
复制
angular.module('app').controller(controllerId, ['$scope', races];
function races($scope) {
    var vm = this;
    ...
    function next() {
        $scope.calendar.fullCalendar('next');
    }
}

在html中:

代码语言:javascript
复制
...
<div ui-calendar ng-model="vm.eventSources" calendar="calendar"></div>
...

虽然没有我想要的那么干净,但对我来说还是足够干净的。

票数 2
EN

Stack Overflow用户

发布于 2014-03-19 03:56:51

有趣的问题。

要用正确的语法实现这一点,我必须对uiCalendar进行黑客攻击。我在指令中添加了一个检查控制器-as属性的条件。http://plnkr.co/edit/6Jj0UHD7A8a1v8SRZrYP?p=preview

代码语言:javascript
复制
<div ui-calendar ng-model="vm.eventSources" controller-as="vm" calendar="calendar"></div>


if(attrs.controllerAs){
  scope.calendar = scope.$parent.$eval(attrs.controllerAs)[attrs.calendar] =  elm.html('');
} else {
  scope.calendar = scope.$parent[attrs.calendar] =  elm.html('');
}

不是最漂亮的解决方案,但有效。也没有经过测试,所以你可以自行决定.

我认为,如果更多的人认为这是一个有效的公关日历,但这是我第一次听到这种类型的请求。

票数 1
EN

Stack Overflow用户

发布于 2016-08-10 12:48:32

我在路由中使用了控制器,然后添加var vm = this之后,我的操作就开始工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22470844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档