Angular UI Bootstrap Datepicker
をダウンロードしましたが、スコープのコントローラにアクセスする必要があります。しかし、私はDatepickerのコードを編集することなくそれをどうやってやるべきか分かりません。異なるモジュールのコントローラ間でデータを共有する方法
だから私は自分のアプリケーション/モジュール、myApp
を持っていると私はui.bootstrap.datepicker
アプリ/モジュールであるUibDatepickerController
とUibDaypickerController
、へのアクセスを必要とするコントローラMyController
を、持っています。そして私はui.bootstrap.datepicker
モジュールのコードを変更したくありません。
これは基本的にはthe same problemですが、前に投稿しましたが、私はそれを多く考え出しました。あなたがサービスを注入することができるようにコントローラを注入することができないので、(これで50時間を過ごした:D)
This solutionは動作しません。ここで
は、私のデザインのようなものです:
コントローラー:
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:あなたは注入
app.factory('thisfactory',function(){
var data = null;
var get = function(){
return data;
}
var save = function(newData){
data = newData;
}
return {get:get,save:save}
});
:
<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>
特に具体的にアクセスする必要はありますか?選択された日付/日または内部の何か – MPawlak
選択した日付と、私のコントローラの変数にアクセスできるようにするには、ui.bootstrap.datepickerモジュールが必要です。 – Dope
日に日には、コントローラの変数に要素の値をバインドするだけで、コントローラからコントローラへの直接アクセスが可能になります。ナイルズの答えはあなたが望むものに近いです。あなたはどこに行くか分かりやすくするために、フィドルなどを投稿できますか? – MPawlak