首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将输入值传递给$mdDialog

将输入值传递给$mdDialog
EN

Stack Overflow用户
提问于 2015-07-09 13:20:17
回答 2查看 5.2K关注 0票数 1

我试图将表单输入传递给我的对话框(例如标题)。问题是:它没有得到表单$scope

如果我将控制器设置为$scope sinde,它将显示正常(例如,请参见$scope.text )。但是,如果我试图获得表单$scope (请参阅`$scope.taskTitle),它将不会显示任何内容。请看我的代码:

JavaScript

代码语言:javascript
复制
app.controller('tasksCtrl', ['$scope', '$mdDialog',  function($scope, $mdDialog){


$scope.teste = 'Just a test, dude';

$scope.expandTask = function() {

    $mdDialog.show({
        clickOutsideToClose: true,
        controller: DialogController,
        scope: $scope,
        preserveScope: true,
        templateUrl: 'models/dialog.tmpl.php',
        locals: {
            id: $scope.tasklist.id,
            title: $scope.taskTitle
        }
    });

}

function DialogController($scope, $mdDialog, id, title) {

    $scope.id = id;
    $scope.title = title;

    $scope.hide = function() {
        $mdDialog.hide();
    };

    $scope.cancel = function() {
        $mdDialog.cancel();
      };
}
}]);

代码语言:javascript
复制
<div class="input-container float-icon" flex="100" layout="row" ng-repeat="task in tasklist">
    <md-input-container flex="100">
        <label>New Task...</label>
        <input type="text" ng-model="taskTitle" name="taskTitle">
        <md-button aria-label="Expandir Tarefa" class="md-icon-button expand-icon" ng-click="expandTask()">
            <md-tooltip hide-sm>Expand Task</md-tooltip>
            <i class="fa fa-expand"></i>
        </md-button>
    </md-input-container>

    {{taskTitle}}

</div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-11 08:03:04

您应该将task对象从ng-重复传递到ng-click。

对于ex ng-click="expandTask($event, task)"

在您的$mdDialog控制器中,您可以访问该对象:

代码语言:javascript
复制
app.controller('tasksCtrl', ['$scope', '$mdDialog', function ($scope, $mdDialog) {

    $scope.expandTask = function (e, task) {
        //ng-click="expandTask($event, task)"
        $mdDialog.show({
            clickOutsideToClose: true,
            controller: function ($mdDialog) {
                var vm = this;
                vm.task = {};
                vm.task = task;  //your task object from the ng-repeat

                $scope.hide = function () {
                    $mdDialog.hide();
                };
                $scope.cancel = function () {
                    $mdDialog.cancel();
                };
            },
            controllerAs: 'modal',
            templateUrl: 'models/dialog.tmpl.php',
            parent: angular.element(document.body),
            targetEvent: e
        });
    };
}]);

在模态模板中,您将使用controllerAs符号访问任务对象,例如:

代码语言:javascript
复制
 <h1> {{ modal.task.name }} <h1>
票数 5
EN

Stack Overflow用户

发布于 2017-08-25 23:25:25

保持最小

并动态创建一个带有作用域变量的控制器。

代码语言:javascript
复制
$scope.expandTask = (e, task) =>
    $mdDialog.show({
        templateUrl: 'dialog.template.html',
        controller: $scope => $scope.taskName = task.name
    })

taskName现在是一个$scope变量,可以在对话框模板中使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31318748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档