将数据传入和传出模态对话框时,Angular UI $模态和范围混淆

时间:2014-09-10 19:19:26

标签: angularjs angular-ui-bootstrap

我刚刚进入Angular并且发现$ modal对话框令人困惑。我无法使用模态的close()方法,但我遵循文档:

$scope.ok = function () {
    $modalInstance.close(["cat","dog"]);
  };

在下面的代码段中,the online docs内部 ModalInstanceCtrl函数,$scope是指ModalDemoCtrl的范围还是ModalInstanceCtrl的范围?我也对ModalInstanceControl签名中items参数的出现感到困惑,因为items也出现在$ modal配置的resolve部分。

<snip>

var modalInstance = $modal.open({
      templateUrl: 'myModalContent.html',
      controller: ModalInstanceCtrl,
      size: size,
      resolve: {
        items: function () {
          return $scope.items;
        }
      }
    });




var ModalInstanceCtrl = function ($scope, $modalInstance, items) {

  $scope.items = items;
  $scope.selected = {
    item: $scope.items[0]
  };

  $scope.ok = function () {
    $modalInstance.close($scope.selected.item);
  };

  $scope.cancel = function () {
    $modalInstance.dismiss('cancel');
  };
};

1 个答案:

答案 0 :(得分:0)

我们可以通过隔离范围实现:将一些值从父范围传递给指令

AngularJS提供了3种类型的前缀

  1. “@”(文本绑定/单向绑定)
  2. “=”(直接模型绑定/双向绑定)
  3. “&安培;” (行为绑定/方法绑定)
  4. 所有这些前缀都接收来自指令元素属性的数据。

     class="directive"
    
     name="{{name}}"
    
     color="color"
    

    当指令在scope属性中遇到前缀时,它将在指令的html元素上查找属性(具有相同的属性名称)

     scope : {    
      name: "@"    
     }
    

    我已关注此链接http://jsfiddle.net/shidhincr/pJLT8/10/light/