Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将md对话框中的值绑定到指令中的ng模型_Javascript_Angularjs_Material Design_Angular Material - Fatal编程技术网

Javascript 将md对话框中的值绑定到指令中的ng模型

Javascript 将md对话框中的值绑定到指令中的ng模型,javascript,angularjs,material-design,angular-material,Javascript,Angularjs,Material Design,Angular Material,在来这里之前,我看了很多问题,但找不到一个能解决我问题的。我来了 我创建了这个指令: .directive('myDirective', {'$mdDialog', function($mdDialog){ return { restrict: 'E', templateUrl: TEMPLATE_URL, scope: { type: '@', fieldName: '@',

在来这里之前,我看了很多问题,但找不到一个能解决我问题的。我来了

我创建了这个指令:

.directive('myDirective', {'$mdDialog',
    function($mdDialog){
    return {
        restrict: 'E',
        templateUrl: TEMPLATE_URL,
        scope: {
            type: '@',
            fieldName: '@',
            ngModel: '='
        },
        link: function($scope, $element, $attrs){
            $scope.close = function(){
                $mdDialog.cancel();
            }

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

            $scope.showDialog= function(){
                var options = {
                    templateUrl: MODAL_TEMPLATE_URL,
                    scope: $scope,
                    controller: 'MyController'
                };

                $mdDialog.show(options);
            };
        }
    };
}]);
该指令打开一个对话框(使用角度材质),其中的所有内容都正确渲染,但有一个ng click调用“selectItem”函数,并传入一个对象(项),但该对象(项)不会在ngModel文本字段中持久存在。对象具有“名称”属性集。它在文本字段中出现一秒钟,然后消失。然后,如果我再次尝试打开对话框,ng单击将不再触发“showDialog”功能

以下是指令模板:

<md-input-container class="field-result">
    <label>{{fieldName}}</label>
    <input type="text" ng-model="ngModel.Name" ng-disabled="true">
</md-input-container>
<md-button class="md-icon-button md-raised icon icon-button icon-search" ng-click="showDialog()"></md-button>

{{fieldName}}

因此,我想要的是:在设置属性“Name”后,用ngModel在文本字段上显示属性“Name”的值,并用“showDialog”按钮修复ng单击问题


提前谢谢

由于
scope:$scope,


您需要将
preserveScope:true,
添加到对话框选项中。看到这个

值得一提的是,当我使用ngDialog(像Eastore)时,我对ngModel和按钮都没有问题。但我想使用ngMaterial,因为它更好看,并且有很多内置指令我可以使用。谢谢,船长!这真的很简单。抱歉问了这么简单的问题嘿