【发布时间】:2014-05-15 11:50:35
【问题描述】:
我刚刚写了这个函数来回答 SO:
function ngWrap($scope, fn) {
return function() {
var args = [].slice.call(arguments);
return $scope.$apply(function() {
fn.apply(null, args);
});
};
}
有更好的版本:
function ngWrap($scope, fn) {
return function() {
var args = [].slice.call(arguments);
if ($scope.$$phase) {
fn.apply(null, args);
} else {
return $scope.$apply(function() {
fn.apply(null, args);
});
}
};
}
可以用来缩短这个:
socket.on('myevent', function(arg){$scope.$apply(function(){trigger_fn(arg)})})
进入:
socket.on('myevent', ngWrap($scope, trigger_fn));
这个函数是否有名字(第一个)或者你可以使用下划线编写它的简单版本(可以只使用$scope.$apply.bind($scope) 作为参数)或者lisp 有一个这样的函数?
【问题讨论】:
标签: javascript angularjs underscore.js higher-order-functions