AngularJS类中的引用属性(ControllerAs语法)
Reference property in AngularJS class (ControllerAs syntax)
最近我一直在使用 ControllerAs 语法,但我不确定如何在$watch
内从我的控制器更改模型。
我的手表是这样的:
$scope.$watch(angular.bind(this, function () {
return this.allItemsSelected;
}), function (value) {
//
})
在我看来,我得到了一个名为pages.selectedItems
的模型。 pages
是我PagesController
的别名。
到目前为止,我已经尝试了$scope.selectedItems
,selectedItems
和this.selectedItems
,但它不起作用。我也把它包在angular.bind
里,但效果不佳。
有人也有这个问题,可以提供解决方案吗?
EDIT
我正在使用 checklist-model
指令,因此 ngRepeat 中的模型checklist-model="pages.selectedItems"
.allItemsSelected
变量是复选框中的模型。如果它是真的,我必须遍历我的数据并将 id 添加到selectedItems
数组中。
请看一下下面的内容,我认为它应该与您正在尝试做的事情相匹配。
请注意,您通常需要对传递给$scope.$watch()
的两个函数使用 angular.bind()
:
angular.module("myModule", ['checklist-model'])
.controller("MyController", ["$scope", function MyController($scope) {
this.options = ["hello", "goodbye", "bonsoir", "bonne nuit"];
$scope.$watch(angular.bind(this, function () {
return this.selectAll;
}),
angular.bind(this, function (value) {
if (value) {
this.selectedOptions = angular.copy(this.options);
}
}));
}]);
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.min.js"></script>
<script src="//vitalets.github.io/checklist-model/checklist-model.js"></script>
<div ng-app="myModule" ng-controller="MyController as me">
<div ng-repeat="item in me.options">
<input type="checkbox" checklist-model="me.selectedOptions"
checklist-value="item" /> {{item}}
</div>
<div>
<input type="checkbox" ng-model="me.selectAll" /> Select all
</div>
<div ng-repeat="opt in me.selectedOptions">{{opt}}</div>
</div>
编辑:使用 angular.bind()
的另一种方法是将this
分配给匿名函数之外的变量,然后使用它代替这些函数中的this
:
angular.module("myModule", ['checklist-model'])
.controller("MyController", ["$scope", function MyController($scope) {
var self = this;
this.options = ["hello", "goodbye", "bonsoir", "bonne nuit"];
$scope.$watch(function () {
return self.selectAll;
}, function (value) {
if (value) {
self.selectedOptions = angular.copy(self.options);
}
});
}]);
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 如何告诉MathJax对下标使用替代语法
- Javascript语法向设置发出sessionStorage值
- 使用$scope方法时的ControllerAs语法
- AngularJS类中的引用属性(ControllerAs语法)
- Angular JS使用controllerAs和这个语法与范围或这个变量
- Firebase 3 向数据绑定,采用 ControllerAs 语法
- 访问指令's将范围与“;这个“;使用controllerAs语法
- 如何使用新的controllerAs语法和面向对象控制器在Angular中实现双向绑定
- 如何在AngularJS modal中使用controllerAs语法?的方法
- 如何使用controllerAs语法实时更新另一个angular控制器
- ControllerAs with vm.语法:如何
- 使用controllerAs语法通过$watch指令更改父控制器模型
- 使用ControllerAs语法绑定服务变量,不带$scope
- AngularJS 1.4:如何使用bindToController和controllerAs语法创建双向绑定
- AngularJS:在对象中使用ControllerAs语法定位窗体