在mdDialog上无法第二次分配范围变量

时间:2016-07-12 10:16:05

标签: angularjs angular-material mddialog

我是角度素材的新手,我的问题是我无法在第二次打开对话框时绑定范围数据。

我从分配给范围变量的数据库中检索数据,并且还在md对话框中绑定了范围var。(对于第一个tym,它工作fyn没有问题)在第二个cant能够使用md-dialog框绑定数据< / p>

下面是我的代码示例

  var retrieveData = function(){
    var companyUrl =  dbUrl; 
     var request = {
         url:  companyUrl,
           type: "GET",

      };
    $http(request)
            .success(function (retrievedSource){

    // here I am assigning retrieved data to the scope variable 
                 $scope.retrievedSources = retrievedSource;

                }).error(function (){
                 console.log("search failed");
            });
 };



 <md-input-container class="md-icon-float md-block">
<label>Company Name  <span> * </span></label>
<input type="text" ng-required="true" style="width:100%;" name="companyName"  ng-pattern="namePattern" value='{{retrievedSources.companyName}}' />
<span id="companyNameErrorMessages" class="error"></span>

问题:

value='{{retrievedSources.companyName}}'

这个范围分配在我使用mdDialog取消取消对话框后第一次正常工作取消我无法绑定范围数据

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

1 个答案:

答案 0 :(得分:1)

我创建了一个CodePen,其中包含J绑定并在$scope.reterivedSources中正确更新的示例。

新值按钮会更新md-dialog。我不知道您是如何设置代码来显示对话框的,但请在我的代码中注明:

$scope.reterivedSources.companyName

JS

scope: $scope,
preserveScope: true

标记

.controller('AppCtrl', function($scope, $mdDialog) {
  $scope.retrievedSources = { companyName: 123 };

  $scope.showDialog = function(ev ,id) {
   $mdDialog.show({
     templateUrl: "test.html",
     parent: angular.element(document.body),
     clickOutsideToClose:true,
     targetEvent: ev,
     controller: materialEditCtrl,
     fullscreen: false,
     scope: $scope,
     preserveScope: true
   });
  };

  $scope.newValue = function () {
    $scope.retrievedSources.companyName = Math.random() * 1000;
  }
});