这段代码的奇怪行为:
我有一些Angular控制器:
.controller('View1Ctrl', ['$scope', 'CrawlServerExecutor', function ($scope, CrawlServerExecutor) { $scope.results = []; var showResults = function (results) { results.forEach(function (result) { $scope.results.push(result); }); };
写这样的时候:
var showResults = function (results) { results.forEach($scope.results.push); };
我得到这个错误:
Error: undefined is not an object
为了尝试访问该push
函数,我查看$scope.results
了调试器内部并且该对象被识别为数组,但由于某种原因,在这种语法中它并没有引用它的push
功能.而且我更喜欢这段代码,因为它更优雅.
任何人都知道为什么会这样?
谢谢
您需要将数组绑定到函数,因此可以在正确的上下文中调用它(this
正确设置).
results.forEach($scope.results.push.bind($scope.results));