尝试理解$.inArray,或将$scope转换为“$scope”;控制器As”;AngularJS中的语法
trying to understand $.inArray, or converting $scope to "controller As" syntax in AngularJS
这对大家来说应该是一个相对简单的过滤器,我正在尝试使用我在Angular应用程序中在线找到的过滤器,并试图理解JsFiddle:中的$.inArray方法
http://jsfiddle.net/65Pyj/
我熟悉$scope,但从未见过$.inArray方法,也不知道如何将其转换为vm.key表示法。
我通常会尝试自己解决这个问题,但我的项目还有几个小时就要完成了,我已经彻夜未眠,第一次在这里问问题,感谢任何能提前提供帮助的人。
到目前为止,我将其转换为:http://jsfiddle.net/65Pyj/646/
html:```
<div ng-app="fruit">
<div ng-controller="FruitCtrl as vm">
<input type="checkbox" ng-click="vm.includeColour('Red')"/> Red</br/>
<input type="checkbox" ng-click="vm.includeColour('Orange')"/> Orange</br/>
<input type="checkbox" ng-click="vm.includeColour('Yellow')"/> Yellow</br/>
<ul>
<li ng-repeat="f in fruit | filter:vm.colourFilter">
{{f.name}}
</li>
</ul>
Filter dump: {{colourIncludes}}
</div>
</div>
```
和我的js:
'use strict'
angular.module('fruit', []);
function FruitCtrl() {
var vm = this;
vm.fruit = [
{'name': 'Apple', 'colour': 'Red'},
{'name': 'Orange', 'colour': 'Orange'},
{'name': 'Banana', 'colour': 'Yellow'}];
vm.colourIncludes = [];
vm.includeColour = function(colour) {
var i = $.inArray(colour, vm.colourIncludes);
if (i > -1) {
vm.colourIncludes.splice(i, 1);
} else {
vm.colourIncludes.push(colour);
}
}
vm.colourFilter = function(fruit) {
if (vm.colourIncludes.length > 0) {
if ($.inArray(fruit.colour, vm.colourIncludes) < 0)
return;
}
return fruit;
}
}
```
但它似乎还不太好用,我尝试的都不起作用,我知道我背后缺乏基本原理,但我只需要最后一个功能就可以了,我的项目就要完成了,所以,如果有任何帮助,我将不胜感激。
您没有创建控制器。
右侧代码:
angular.module('fruit', [])
.controller( 'FruitCtrl', FruitCtrl );
Js投标示例:
'use strict'
angular.module('fruit', [])
.controller( 'FruitCtrl', FruitCtrl );
function FruitCtrl() {
var vm = this;
vm.fruit = [
{'name': 'Apple', 'colour': 'Red'},
{'name': 'Orange', 'colour': 'Orange'},
{'name': 'Banana', 'colour': 'Yellow'}];
vm.colors = {};
vm.colourFilter = function(fruit) {
console.log( fruit, vm.colors[fruit.colour] );
return vm.colors[fruit.colour];
}
vm.selectedFruits = [];
}
<div ng-app="fruit">
<div ng-controller="FruitCtrl as vm">
<input type="checkbox" ng-model="vm.colors.Red"/> Red</br/>
<input type="checkbox" ng-model="vm.colors.Orange"/> Orange</br/>
<input type="checkbox" ng-model="vm.colors.Yellow"/> Yellow</br/>
<ul>
<li ng-repeat="f in vm.fruit | filter:vm.colourFilter">
{{f.name}}
</li>
</ul>
Filter dump: {{vm.colors}}
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
相关文章:
- AngularJS,angular.element($0).scope()揭示了每个控制器的函数
- 在将绑定应用于控制器之后,是否会发出Angular$scope事件
- $Scope变量在HTML中不更新,尽管在控制器中不断更新
- 为什么$scope和'这'关键字在控制器内部可互换使用
- 将Scope变量作为指针发送,并在控制器外部对其进行更改
- $scope$观察数组中的一个特定对象——Angular JS控制器
- AngularJS:使用$scope$以控制器作为语法进行观察
- 如何在多个控制器之间封装设置$scope值
- 从服务返回值时$scope控制器的变量是未定义的
- 将传递的函数参数附加到控制器内的$scope
- scope() 函数在 AngularJS 控制器中返回未定义
- 控制器内部的scope函数不根据视图中的ng模型更新值
- Angular$scope在更新时未将结果传递给父控制器
- 如何将值与$scope绑定,以从定义状态ui路由器的控制器中使用ng模型进行查看
- Angular:$scope有效,但“;控制器为“;不触发ng更改事件
- 如何添加$scope$打开以在没有控制器的情况下查看
- AngularJs的单元测试失败是因为Karma没有'无法识别$scope$控制器中的侦听器
- $scope$控制器中的手表未按预期工作
- 使用$scope控制器来清空数据
- 从$scope控制器中绑定数据