javascript - 将数据从 ng-Dialog html 传递到 Controller

标签 javascript html angularjs

在使用 ng-Dialog 时遇到一些问题。 当我注意到 ngDialog Controller 选项时,它起作用了。 我可以从

获取 $scope.descriptionText
<p>Description:</p>
    <textarea ng-model="descriptionText"></textarea>

现在我调用没有参数 Controller 的对话框

 ngDialog.open({
          template: 'views/pages/timesheet/template/newEventTemplate.html',
          //controller:'newEventDialogCtrl',
          scope: $scope,
    ...

并且此值 $scope.descriptionText 未定义。

请帮助我将 html 元素的值返回到我的 Controller 或 Controller 范围。

对话调用代码:

    $scope.createNewEventModalWindow = function(args)
    {
      $scope.setNewEventField('start', args.start.value);
      $scope.setNewEventField('end', args.end.value);
      ngDialog.open({
          template: 'views/pages/timesheet/template/newEventTemplate.html',
          //controller:'newEventDialogCtrl',
          scope: $scope,
          className: 'ngdialog-theme-default',
          plain: false,
          showClose: true,
          closeByDocument: true,
          closeByEscape: true,
          appendTo: false,
          disableAnimation: false,
          overlay: false
      }).closePromise.then(function(value)
            {
              console.log('Test msg');
              console.log(value);

              var newEvent = {
                start: $scope.getNewEventField('start'),
                end: $scope.getNewEventField('end'),
                text: $scope.descriptionText,
                userID: getCurrentUserID(),
                projectID: $scope.selectedProject,
                taskID: $scope.selectedTask
              };

              console.log('Event data to server');
              console.log(newEvent);
/*
              TimesheetFactory.createEvent(newEvent)
                .success(function(data) {
                    $scope.events = data;
                    $scope.message('Event created');
                    console.log($scope.events);
                })
                .error(function(data) {
                    console.log('Error: ' + data);
                });
*/
            });
    }

对话框的 HTML 模板:

<div class="ngdialog-message">
    <h3>Create Event</h3>
    <p>Project</p>

    <select id='selectProject' ng-model= "selectedProject">
      <option ng-repeat="project in projects" value="{{project.id}}">{{project.name}}</option>
    </select>
    <p>Task</p>
    <select id='selectTask' ng-model="selectedTask">
      <option ng-repeat="task in tasks" value="{{task.id}}">{{task.name}}</option>
    </select>
    <p>Time</p>

    <input type="time" id="eventTime" name="input" ng-model="timeLentgh"/>

    <p>Description:</p>
    <textarea ng-model="descriptionText"></textarea>
</div>
<div class="ngdialog-buttons">
    <button
      type="button"
      class="ngdialog-button ngdialog-button-secondary"
      ng-click="closeThisDialog()"
    >Cancel</button>
    <button
      type="button"
      class="ngdialog-button ngdialog-button-primary"
      ng-click="btnCreateEventClicked()"
    >Create</button>
</div>

最佳答案

您可以通过这种方式访问​​对话框的范围:

value.$dialog.scope()

value - 您从 closePromise 获得的参数。

例如,在此副本中,您将拥有 descriptionText

Plunker 检查和播放:http://plnkr.co/edit/nTNwAxyL1KGuvKGAeTmy?p=preview

关于javascript - 将数据从 ng-Dialog html 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34031205/

相关文章:

javascript - 通过javascript计算文件夹中的文件数

javascript - 使用 javascript 和 html 的视频

javascript - AngularJS:如何保持在 'run' 方法直到完成

javascript - JQuery 自动完成与 JSON 结果不起作用

javascript - 在 React Native 中从另一个函数内部调用一个函数

javascript - 如何在 jqGrid 中通过行 ID 获取页码

html - 获取与文本内联的图像

javascript - Jquery的scrollTop只会滚动到第一个id,而不滚动到其他id

AngularJS 代码理解

javascript - 如何清除 Angular 中选择元素中的过滤器?