是的,我知道之前已经讨论了很多次,我阅读了有关这个问题的所有帖子和评论,但似乎仍然无法理解.
MSDN提供的解决此违规的一个选项是在访问属性时返回一个集合(或由集合实现的接口),但显然它无法解决问题,因为大多数集合不是不可变的,也可以改变了.
我在这个问题的答案和评论中看到的另一种可能性是使用ReadOnlyCollection封装数组并返回它或它的基本接口(如IReadOnlyCollection),但我不明白这是如何解决性能问题的.
如果在任何时候引用该属性,它需要为封装数组的新ReadOnlyCollection分配内存,那么与返回原始副本相比,有什么区别(以性能问题的方式,不是编辑数组/集合)阵列?
此外,ReadOnlyCollection只有一个带有IList参数的构造函数,因此需要在创建数据之前用数据包装数组.
如果我故意想在我的类中使用数组(而不是作为不可变集合),那么当我为ReadOnlyCollection分配新内存并用它封装我的数组而不是返回数组的副本时,性能是否更好?
请澄清一下......
我正在使用来自另一个控制器的$ uibModal.open打开一个模态窗口,并且需要在模态窗口完全关闭时通知(而不是在关闭期间...)所以我将能够运行一个函数.
打开模态的代码如下:
var modalInstance = $uibModal.open({
templateUrl: "myModalContent.html",
controller: "termModalCtrl",
windowClass: 'app-modal-window',
resolve: {
'params': function () { return id }
}
});
Run Code Online (Sandbox Code Playgroud)
我看到了一些建议的解决方案:
modalInstance.result.then(function(result) {
});
Run Code Online (Sandbox Code Playgroud)
问题是在实际关闭模态窗口之前调用函数回调(当模态窗口仍然打开时),这不是我想要的行为,因为它意味着它捕获"关闭"事件而不是"封闭的"模态事件".
有一个简洁明了的方法来实现这个吗?如果没有,我会感到惊讶,因为这种行为在地球上的任何UI框架中都很常见......
请帮忙!
javascript modal-dialog angularjs angular-ui-bootstrap angular-ui-modal