我在这里找到了这个答案:https://stackoverflow.com/a/28357122/5459561
它在Plunker上运行得很好,但是当我在我的项目中实现它时,它不起作用。
我的HTML:
<div ng-controller="PolicyController as policy">
<select multiple ng-model="proto" ng-init="proto=policy.protocols[0]"
ng-options="protocol for protocol in policy.protocols"></select>
<select multiple ng-model="fc" ng-options="function.code for function in
policy.functions | filter:{protocol:proto}"></select>
</div>
我的JS:
app.controller('PolicyController', ['$http', function($http){
var policy = this;
policy.functions = [{"code": 1, "protocol": "A"},{"code": 2, "protocol": "A"},{"code": 3, "protocol": "B"},{"code": 4, "protocol": "C"}];
policy.protocols = ["A", "B", "C"];
现在的问题是当我点击更改当前选择的协议时,代码消失了。但是当我第一次初始化页面时,我可以看到协议A的代码,这意味着&#39; ng-init&#39;工作正常。
注意:它在plunker中有效,如链接的答案中所示,但不在我的项目中。我使用角度V1.5.0,而Plunker使用1.1.5。虽然我不相信它会有所作为。
有什么想法吗?
答案 0 :(得分:3)
只选择一个协议时,您的代码可以正常工作。但是,如果您选择多个协议,例如A和B,则scala> val rdd = sc.parallelize(List((1,2),(3,4),(3,6)),4)
...
scala> rdd.partitions.size
res6: Int = 4
scala> rdd.partitioner.isDefined
res8: Boolean = false
变量包含数组$scope.proto
,这会与您的过滤混淆。
this question上选择的答案是我能想到的最干净的解决方案。编写一个处理第一个选择值数组的函数,并根据该函数返回第二个选择的真或假。