AngularJS вещание
Есть функция обновления, которая должна транслироваться дочерним контроллерам. Я сделал что-то вроде этого в родительском контроллере:
// Refresh/Cancel
$scope.OnGridBODRefresh() = {
function () {
$scope.$broadcast('refresh',$scope.dtBODStartValue,$scope.dtBODStopValue);
}
}
и в дочернем контроллере:
// Refresh/Cancel
$scope.OnGridBODRefresh = function () {
// Filter setzen
kendoHelper.SetDataSourceFilters($scope.gridBODProductionRequests.dataSource, "BODTime", "gte", $scope.dtBODStartValue); // gte Kendo Operator
kendoHelper.SetDataSourceFilters($scope.gridBODProductionRequests.dataSource, "BODTime", "lte", $scope.dtBODStopValue); // lte Kendo Operator
}
$scope.dtChildStopValue = new Date();
$scope.dtChildStartValue = new Date($scope.dtChildStopValue - 7 * TIMEINTERVAL_PER_DAY_MS);
$scope.$on('refresh', function (event, dtBODStartValue, dtBODStopValue) {
$scope.dtChildStartValue = dtBODStartValue;
$scope.dtChildStopValue = dtBODStopValue;
}
)
Его следует активировать по кнопке "Отмена". У меня ошибка: "$scope.OnGridBODRefresh не является функцией" в консоли. Кто-нибудь знает это? Спасибо
вот ссылка между моим контроллером и представлением:
<table border="0" class="navigationBar">
<tr>
<td class="navigationBar-left">
({{refreshcount}})
<kendo-button class="k-primary button button-save" ng-click="OnGridBODSave()">Save</kendo-button>
<kendo-button class="k-primary button button-cancel" ng-click="OnGridBODRefresh()">Cancel</kendo-button>
</td>
<td class="navigationBar-right">
@PLanguageTexts.TXT_AUTO_REFRESH: <input type="checkbox" name="checkBoxAutomaticRefresh" ng-model="checkBoxAutomaticRefreshValue" ng-true-value="1" ng-false-value="0" ng-change="OnCheckBoxAutomaticRefreshChange(e)">
|
@PLanguageTexts.TXT_BOD_TIME
<input kendo-date-time-picker="dateTimePickerBODStart" k-ng-model="dtBODStartValue" k-options="dateTimePickerBODStart"/>
<input kendo-date-time-picker="dateTimePickerBODStop" k-ng-model="dtBODStopValue" k-options="dateTimePickerBODStop"/>
</td>
</tr>
</table>
<div ng-controller="BODProductionRequestsCtrl">
<div kendo-grid="gridBODProductionRequests" k-options="gridBODProductionRequests(dataItem)">
<div k-detail-template>
<kendo-tabstrip>
<ul>
<li class="k-state-active">@PLanguageTexts.TXT_COMMENT</li>
</ul>
<div>
<textarea id="BODProductionRequestsComment" class="textarea-gridComment" ng-model="dataItem.Comment" ng-change="OnCommentChange(dataItem, gridBODProductionRequests)"></textarea>
</div>
</kendo-tabstrip>
</div>
</div>
{{dtChildStartValue}}
</div>
1 ответ
Решение
// Refresh/Cancel
$scope.OnGridBODRefresh = function () {
$scope.$broadcast('refresh',$scope.dtBODStartValue,$scope.dtBODStopValue);
}
Я не понимаю, почему вы завернули свою функцию в объект. Если вы удалите скобки вокруг вашей функции, это будет работать как шарм.
Другая проблема заключается в том, что ваш ng-click не находится внутри вашего div, связанного с контроллером. Попробуйте сделать это таким образом. Если это не сработает, возможно, возникнет проблема с кендо, где я не смогу помочь.
<div ng-controller="BODProductionRequestsCtrl">
<table border="0" class="navigationBar">
<tr>
<td class="navigationBar-left">
({{refreshcount}})
<kendo-button class="k-primary button button-save" ng-click="OnGridBODSave()">Save</kendo-button>
<kendo-button class="k-primary button button-cancel" ng-click="OnGridBODRefresh()">Cancel</kendo-button>
</td>
<td class="navigationBar-right">
@PLanguageTexts.TXT_AUTO_REFRESH: <input type="checkbox" name="checkBoxAutomaticRefresh" ng-model="checkBoxAutomaticRefreshValue" ng-true-value="1" ng-false-value="0" ng-change="OnCheckBoxAutomaticRefreshChange(e)">
|
@PLanguageTexts.TXT_BOD_TIME
<input kendo-date-time-picker="dateTimePickerBODStart" k-ng-model="dtBODStartValue" k-options="dateTimePickerBODStart"/>
<input kendo-date-time-picker="dateTimePickerBODStop" k-ng-model="dtBODStopValue" k-options="dateTimePickerBODStop"/>
</td>
</tr>
</table>
<div kendo-grid="gridBODProductionRequests" k-options="gridBODProductionRequests(dataItem)">
<div k-detail-template>
<kendo-tabstrip>
<ul>
<li class="k-state-active">@PLanguageTexts.TXT_COMMENT</li>
</ul>
<div>
<textarea id="BODProductionRequestsComment" class="textarea-gridComment" ng-model="dataItem.Comment" ng-change="OnCommentChange(dataItem, gridBODProductionRequests)"></textarea>
</div>
</kendo-tabstrip>
</div>
</div>
{{dtChildStartValue}}
</div>