我有这个设备预订系统,它有预订表格,其中包括带弹出日历的字段。因为我在ng-repeat中有这个日历弹出窗口,所以我为它创建了一个指令,所以它可以工作。
我的问题是,当我保存预订时,我无法将指令中的日历值传递给我的控制器。
我该怎么做?
这是保存功能:
$scope.Start = "";
$scope.saveReservation = function (newReservation, equipment) {
$scope.$emit('WORKING', true);
newReservation.EquipmentID = equipment.ID;
newReservation.StartDate = $scope.Start;
reservationService.addNew(newReservation)
.then(function (response) {
$scope.showReservationForm = false;
reservationService.getAll()
.then(function (response) {
$scope.reservations = response.d.results;
$scope.$emit('WORKING', false);
alert("Your reservation was succesful.")
}, function (reason) {
$scope.$emit('WORKING', false);
alert('You reservation failed because of error ' + reason);
});
});
};

这是指令:
"use strict";
(function () {
angular.module("App").directive('myRepeatDirective', [
function () {
return {
link: function (scope, element, attrs) {
if (scope.$last) {
$('.bootstrap-datepicker1').datepicker({
format: "dd/mm/yyyy",
autoclose: true
});
$('#bootstrap-datepicker1').on('change', function () {
scope.Start = $('#bootstrap-datepicker1').val()
});
$('.bootstrap-datepicker2').datepicker({
format: "dd/mm/yyyy",
autoclose: true
});
$('#bootstrap-datepicker2').on('change', function () {
scope.End = $('#bootstrap-datepicker2').val()
});
}
}
};
}])
})();

这是输入:
<input style="width: 200px;" type="text" class="bootstrap-datepicker1" id="bootstrap-datepicker1" data-ng-model="Start" placeholder=" dd.mm.yyyy" />
&#13;
答案 0 :(得分:0)
在指令定义对象上使用'scope'属性。
https://docs.angularjs.org/guide/directive
你也可以找到这个有用的
https://github.com/angular/angular.js/wiki/Understanding-Scopes
答案 1 :(得分:0)
从您的指令中,注入Error MSB3721 The command "xsd.exe cxx-tree --output-dir "." --hxx-suffix ".hxx" --cxx-suffix ".cxx" --ixx-suffix ".ixx" --fwd-suffix "-fwd.hxx" projectSchema.xsd" exited with code 1.
并在想要传递数据时进行广播:
$rootScope
现在,在您的控制器中,获取您想要接收的值:
$rootScope.$broadcast("calendarValue", {value: new Date(), foo: "bar"});
答案 2 :(得分:0)
使用范围。$ apply让角度知道值在角度范围之外变化。其他角度并不知道价值发生了变化。
$('#bootstrap-datepicker1').on('change', function () {
scope.$apply(function(){
scope.Start = $('#bootstrap-datepicker1').val()
})
});