Angularjs如何访问ng-repeat作用域外的过滤值
angularjs how to access ng-repeat filtered value outside its scope
我有一个json定义在我的作用域,如
$scope.People = [
{
"firstName":"John",
"lastName":"Doe",
"Choices":[
{
"Name":"Dinner",
"Options":[
{
"Name":"Fish",
"ID":1
},
{
"Name":"Chicken",
"ID":2
},
{
"Name":"Beef",
"ID":3
}
]
},
{
"Name":"Lunch",
"Options":[
{
"Name":"Macaroni",
"ID":1
},
{
"Name":"PB&J",
"ID":2
},
{
"Name":"Fish",
"ID":3
}
]
}
]
},
{
"firstName":"Jane",
"lastName":"Doe"
}
];
我有一个搜索过滤器,它搜索选择名称并过滤它们。它工作得很好。但是我计划在所有ng-repeat之外显示过滤的结果数(总结果)。不确定如何将ng-repeat的作用域获取到父级
代码片段:
<div ng-controller="ExampleController">
<input type="text" ng-model="q" placeholder="filter choices..." /><br/>
<strong>Not Working :</strong> I have {{results.length}} filtered results<br/><br/>
<div ng-repeat="people in People" ng-hide="results.length == 0">
<strong>Working :</strong> I have {{results.length}} filtered results
{{people.firstName}}
<div ng-repeat="choice in results = (people.Choices | filter:q) ">
{{ choice.Name }}
<select ng-model="choice.SelectedID"
ng-options="option.Name for option in choice.Options"></select> {{choice.SelectedID}}
</div>
完整代码@ http://plnkr.co/edit/ODW3lD?p=preview
感谢您的回复。
问题是ng-repeat创建了一个子作用域,而您试图从父作用域引用该子作用域中的值。为了解决这个问题,您应该创建一个$scope。结果=[]在你的控制器,然后做:
<div ng-repeat="choice in $parent.results = (people.Choices | filter:q) ">
这将强制将它存储在$parent作用域("ExampleController")中的结果变量中,这就是您试图使用它的地方。
这是一个活塞与它的工作:
http://plnkr.co/edit/pWua57wTffdX8dinPKRS?p =预览
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- AngularJS指令隔离作用域
- Angularjs:修改js中的作用域,稍后在页面中使用
- 访问多个指令的隔离作用域
- Javascript作用域和Ajax调用;工作不正常
- 在Angular.js中通过检查作用域变量进行过滤
- 在作用域内过滤 AngularJS
- 从作用域中过滤串联值的 ng 表
- Javascript:过滤已附加到全局作用域的变量
- Angularjs会过滤控制器中的作用域来创建新的作用域
- AngularJS将过滤后的值传递给作用域值