关于模态angular-ui的这个代码示例我有两个简单的问题。
可以找到代码here,我也引用了有趣的部分:
var ModalDemoCtrl = function ($scope, $modal, $log) {
$scope.items = ['item1', 'item2', 'item3'];
$scope.open = function (size) {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: ModalInstanceCtrl,
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
};
// Please note that $modalInstance represents a modal window (instance) dependency.
// It is not the same as the $modal service used above.
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');
};
};
所以我的第一个问题是,为什么我需要在items
上声明一个函数:
resolve: {
items: function () {
return $scope.items;
}
}
我做不了类似的事情:
resolve: {
items: $scope.items;
}
我的第二个问题是为什么items
不是带单引号的字符串? javascript如何将密钥混淆为局部变量?
感谢您的解释!
答案 0 :(得分:3)
对于第一个问题:
resolve: {
items: function () {
return $scope.items;
}
}
resolve.items
是一个功能。
resolve.items()
返回(是)数组
resolve: {
items: $scope.items;
}
resolve.items
是一个数组
resolve.items()
会导致错误。
需要是因为框架需要调用函数。
对于第二个问题:JS!= JSON。语法使它成为可能。如果您已将items=...
改为items: ...
,那么它将被创建为全局变量(如果严格模式处于活动状态,则会产生错误)