gpt4 book ai didi

angularjs - Angular Controller As Syntax-no 方法 '$watchCollection'

转载 作者:行者123 更新时间:2023-12-01 09:54:36 25 4
gpt4 key购买 nike

我正在尝试在 Angular 中使用 Controller As Syntax。在这一点上,我把它放在我的 routerProvider 中......不确定它是否对我遇到的问题有影响,但无论如何它都在这里:

 angular.module('ucp.kick', [
'ngRoute'
])
.config ($routeProvider, APP_BASE_URL) ->
$routeProvider
.when APP_BASE_URL + 'kicks',
name: 'Kicks'
templateUrl: 'kick/partials/kick.html'
controller: 'kick as KickController'

这是我的 Controller 的精简版:

  this.$watchCollection('filtered.devices', function(devices) {
return this.filteredDevices = devices;
});

但是我得到:

TypeError: Object [object Object] has no method '$watchCollection'

我意识到当使用 Controller 作为语法时,你不想注入(inject)作用域。那么,如何访问 $watchCollection 函数?

最佳答案

您仍然需要注入(inject) $scope 才能使用 $watch$watchCollection。现在,您会认为您可以:

$scope.$watchCollection('filtered.devices', function (newVal, oldVal) {});

$scope.$watchCollection('this.filtered.devices', function (newVal, oldVal) {});

但这行不通。所以你需要做:

var that = this;
$scope.$watchCollection(function () {
return that.filtered.devices;
}, function (newVal, oldVal) {

});

或:

$scope.$watchCollection(angular.bind(this, function () {
return this.filtered.devices;
}), function (newVal, oldVal) {

});

或:

$scope.$watchCollection("KickController.filtered.devices", function(newVal, oldVal) { });

关于angularjs - Angular Controller As Syntax-no 方法 '$watchCollection',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30874412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com