gpt4 book ai didi

javascript - 不同模块的 Controller 之间如何共享数据

转载 作者:行者123 更新时间:2023-11-28 05:38:12 25 4
gpt4 key购买 nike

我已经下载了Angular UI Bootstrap Datepicker,并且我需要访问其 Controller 的范围。但我完全不知道如何在不编辑 Datepicker 中的代码的情况下做到这一点,我认为这不是应该做的方式。

所以我有自己的应用程序/模块 myApp 和一个 Controller MyController,其中我需要访问 UibDatepickerControllerUibDaypickerController,位于 ui.bootstrap.datepicker app/module 中。而且我不想更改 ui.bootstrap.datepicker 模块中的代码。

这基本上是the same problem我不久前发布过,但我想我已经弄清楚了很多。 (在这花了大约 50 个小时:D)

This solution不起作用,因为您无法像注入(inject)服务一样注入(inject) Controller 。

这是我的设计:

Controller :

function MyCtrl() {
var vm = this;
vm.dt = new Date();
vm.options = {
...
};
vm.refresh = function() {
//returns initialized value all the time (current date)
console.log(vm.dt);
$("#calendar").data("$uibDatepickerController").refreshView();
}
};
angular.module('myApp')
.controller('MyCtrl', MyCtrl);

HTML:

<div ng-controller="CalendarCtrl as calCtrl">
<pre>Selected date is: <em>{{calCtrl.dt | date:'fullDate' }}</em>
</pre>
<div style="display:inline-block">
<div uib-datepicker="" id="calendar" ng-model="calCtrl.dt" datepicker-options="calCtrl.options"></div>
</div>
<button ng-click="calCtrl.refresh()">Refresh</button>
</div>

最佳答案

您提供类似的服务:

app.factory('thisfactory',function(){
var data = null;
var get = function(){
return data;
}
var save = function(newData){
data = newData;
}
return {get:get,save:save}
});

然后将工厂注入(inject)每个 Controller ,并使用它通过 save 和 get 方法来回传递数据

关于javascript - 不同模块的 Controller 之间如何共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39176698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com