0

我见过两种将参数传递给 的方法AngularJS Modal,一种是通过resolve绑定,另一种是通过scope绑定。我想知道一个是否比另一个更好,为什么?

解决绑定

$modal.open({

      templateUrl: 'partials.html',
      controller: 'MyCtrl',
      resolve: {
         someData: function(){
             return 'Some Data';
         }
      }
})

.controller('MyCtrl',function(someData){

     console.log(someData); // prints Some Data
})

范围绑定

var scope = $rootScope.$new();
scope.someData = 'Some Data';

$modal.open({

      templateUrl: 'partials.html',
      controller: 'MyCtrl',
      scope: scope
})

.controller('MyCtrl',function($scope){

     console.log($scope.someData); // prints Some Data
})
4

1 回答 1

2

在这种情况下,Resolve不被视为具有约束力。$modal.open它通过解析将值传递给控制器​​时。这意味着如果您更改父控制器中的值,除非重新初始化,否则模态将不会更新。但是,您可以在 resolve 中传入 Promise,这意味着如果您正在等待从服务器返回的数据,使用 resolve 可以在数据返回之前阻止模态加载。

resolve: {
  someData: function() {
    return $http.get('someurl');
  }
}

优点缺点

  • 异步运行代码
  • 较慢(如果使用承诺)
  • 不与父范围值绑定

范围绑定将允许您拥有单向绑定数据,每当父范围中的数据更新时,模态中的值可以同时更新它的值。

优点缺点

  • 快点
  • 与父范围值绑定
  • 如果您更改模态控制器中的值,可能会造成范围污染
于 2017-04-28T16:42:39.397 回答