我有这个我定义的功能,一旦定义我执行它。有没有一种方法可以一次性结合定义和执行,因为这是唯一使用此功能的地方?
$scope.examWatchCollection = function () {
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function (newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
};
$scope.examWatchCollection();
答案 0 :(得分:2)
你的问题太复杂了。简单来说,根本不要创建一个函数。
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function(newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
如果你还想要一个功能,你可以像{<3}}一样使用
(function() {
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function(newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
}());
第二个版本,创建一个函数对象,然后立即调用它。通常,这用于限制代码段使用的变量的范围,因为我们在JavaScript中没有块范围。但我坚信你应该选择第一种选择。
答案 1 :(得分:0)
(function () {
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function (newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
})();
答案 2 :(得分:0)
如果您从未使用它,那么您不需要保留对它的引用。只需匿名定义并立即执行:
(function () {
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function (newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
}());
在JavaScript中,函数是一个像任何其他对象一样的对象。您可以从其名称或函数本身的定义中执行它。任何函数,无论是通过名称引用还是内联定义,如果后面都有括号,都会执行。
根本不创建函数甚至更简单,执行代码:
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function (newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});