Angularjs过滤器:Angularjs中的子级模型和父级flilter
HTMLAngularjs过滤器:Angularjs中的子级模型和父级flilter,angularjs,angularjs-scope,Angularjs,Angularjs Scope,HTML 过滤输入: {{(x.name |大写)+','+x.country} JS: var-app=angular.module('myApp',[]); 应用程序控制器('mainCtrl',函数($scope){ $scope.names=[ {姓名:'Jani',国家:'Norway'}, {姓名:'Hege',国家:'Sweden'}, {姓名:'Kai',国家:'丹麦'} ]; }); 应用程序控制器('secondCtrl',函数($scope){ }); 简
过滤输入:
-
{{(x.name |大写)+','+x.country}
JS:
var-app=angular.module('myApp',[]);
应用程序控制器('mainCtrl',函数($scope){
$scope.names=[
{姓名:'Jani',国家:'Norway'},
{姓名:'Hege',国家:'Sweden'},
{姓名:'Kai',国家:'丹麦'}
];
});
应用程序控制器('secondCtrl',函数($scope){
});
简而言之,这个过滤器不工作
规则1:模型(测试)必须位于第二个控制器中
规则2:数据和ng repeat必须在mainCtrl中
谢谢。您试图完成的基本任务是根据子控制器的变量筛选父控制器中的值 一种方法是在父控制器中公开
测试
我对您的ng model
属性做了一些小更改
<script>
var app = angular.module('myApp', []);
app.controller('mainCtrl', function($scope) {
$scope.names = [
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}
];
});
app.controller('secondCtrl', function($scope) {
});
</script>
过滤输入:
我已经向父控制器公开了相同的内容,因此在secondCntrl中所做的更改将暴露于父控制器中的test
,并且您的过滤器工作正常
这是它的一部分。看看那把小提琴:
问题是filter
语句中的test
变量与ngModel中声明的变量不同,如果输入不正确
通常,变量在父作用域中声明,并在子作用域中使用,这与您想要使用的相反
为了让父作用域使用子作用域的变量,需要注册共享该变量的服务
更新:
下面是使用服务的实现,遵循您指定的约束1。二,
这个答案也是正确的。但不幸的是,只有一个答案可以是马克·索雷尔。谢谢,这是对的。谢谢@Amit。
<script>
var app = angular.module('myApp', []);
app.controller('mainCtrl', function($scope) {
$scope.names = [
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}
];
});
app.controller('secondCtrl', function($scope) {
});
</script>
<div ng-controller="secondCtrl">
<p>Filtering input:</p>
<p><input type="text" ng-model="$parent.test"></p>
</div>