带有过滤器覆盖值的Angularjs ngInit

带有过滤器覆盖值的Angularjs ngInit,angularjs,Angularjs,我试图初始化一个过滤后的值,但没有成功。我将使用partial/ng include,以便变量的名称不能更改 我使用了AngularJSV1.0.2,也尝试了v1.1.1 <script> function Ctrl($scope) { $scope.trains = [ 1, 2]; } </script> <div ng-app ng-controller="Ctrl"> <div ng-init="t = (tr

我试图初始化一个过滤后的值,但没有成功。我将使用partial/ng include,以便变量的名称不能更改

我使用了AngularJSV1.0.2,也尝试了v1.1.1

<script>
    function Ctrl($scope) {
      $scope.trains = [ 1, 2];
    }
</script>


<div ng-app ng-controller="Ctrl">
  <div ng-init="t = (trains | filter:1)">    
    {{ t }}
    {{ trains | filter:1 }}
  </div>
  <div ng-init="t = (trains | filter:2)">
    {{ t }}
    {{ trains | filter:2 }}
  </div>
</div>

下面是一个示例->

您是否尝试遍历$scope.trains?在这种情况下,您应该使用ng repeat。我不认为过滤器适用于ng init


{{t}
{trains | filter:1}
{{t}
{{trains | filter:2}

您是否尝试遍历$scope.trains?在这种情况下,您应该使用ng repeat。我不认为过滤器适用于ng init


{{t}
{trains | filter:1}
{{t}
{{trains | filter:2}

小心使用
ng init
表达式(尤其是在初始化新变量时)。在您的示例中,您运行两个单独的表达式:
t=trains
filter:

您应该使用
t=(trains | filter:)


{{t}
{trains | filter:1}
{{tt}}
{{trains | filter:2}

jsFiddle:

小心使用
nginit
表达式(尤其是在初始化新变量时)。在您的示例中,您运行两个单独的表达式:
t=trains
filter:

您应该使用
t=(trains | filter:)


{{t}
{trains | filter:1}
{{tt}}
{{trains | filter:2}

jsiddle:

不确定这是您想要的。。。 但您可以使用指令在ng init和ng include之间进行组合:

HTML:


JS:

函数Ctrl($scope,$filter){
$scope.trains=[1,2];
}
angular.module(“myApp”,[])
.directive(“myDirective”,function()){
返回{
限制:“E”,
范围:'隔离',
模板:“{exposeAttribute}}{{anotherOne}}}”,
控制器:Ctrl,
//templateUrl:“mytemplate.html”,
链接:功能(范围、元素、属性){
scope.exposeAttribute=attr.fieldName;
scope.anotherOne=attr.train;
}
};
});
输出为:

1 2

2 17


不确定这是您想要的。。。 但您可以使用指令在ng init和ng include之间进行组合:

HTML:


JS:

函数Ctrl($scope,$filter){
$scope.trains=[1,2];
}
angular.module(“myApp”,[])
.directive(“myDirective”,function()){
返回{
限制:“E”,
范围:'隔离',
模板:“{exposeAttribute}}{{anotherOne}}}”,
控制器:Ctrl,
//templateUrl:“mytemplate.html”,
链接:功能(范围、元素、属性){
scope.exposeAttribute=attr.fieldName;
scope.anotherOne=attr.train;
}
};
});
输出为:

1 2

2 17


我还没有查清楚原因和方式, 但似乎要放置一个ng if属性 在ng init使其工作之前

测试角度为1.2+

<div ng-app ng-controller="Ctrl">
    <div ng-init="t = (trains | filter:1)">    
        {{ t }}
        {{ trains | filter:1 }}
    </div>
    <div ng-if="true" ng-init="t = (trains | filter:2)">
    {{ t }}
    {{ trains | filter:2 }}
    </div>
</div>

{{t}
{trains | filter:1}
{{t}
{{trains | filter:2}

我还没有确定原因和方式, 但似乎要放置一个ng if属性 在ng init使其工作之前

测试角度为1.2+

<div ng-app ng-controller="Ctrl">
    <div ng-init="t = (trains | filter:1)">    
        {{ t }}
        {{ trains | filter:1 }}
    </div>
    <div ng-if="true" ng-init="t = (trains | filter:2)">
    {{ t }}
    {{ trains | filter:2 }}
    </div>
</div>

{{t}
{trains | filter:1}
{{t}
{{trains | filter:2}

我想通过使用带有ng include的partial保持代码干燥。在部分中,我在t上迭代。我希望通过使用带有ng include的部分来保持代码的干爽。在部分中,我在t上迭代。这几乎就是我想要的。我还将使用ng include,因此无法重命名变量。@Damax“如果我使用partial”是什么意思?你能举个例子吗?另外,不要用答案更新你的问题,这会让更多的访问者感到困惑…这几乎就是我想要的。我还将使用ng include,因此无法重命名变量。@Damax“如果我使用partial”是什么意思?你能举个例子吗?另外,不要用答案更新你的问题,这会让更多的访问者感到困惑。。。
<div ng-app ng-controller="Ctrl">
  <div ng-init="t = (trains | filter:1)">    
    {{ t }}
    {{ trains | filter:1 }}
  </div>
  <div ng-init="tt = (trains | filter:2)">
    {{ tt }}
    {{ trains | filter:2 }}
  </div>
</div>
<div ng-app="myApp" ng-controller="Ctrl">    
    <my-directive field-name=1 train=2></my-directive>
    <my-directive field-name=2 train=17></my-directive>
</div>
function Ctrl($scope, $filter) {
  $scope.trains = [1, 2]; 
}

angular.module("myApp", [])
.directive("myDirective", function() {
    return {
        restrict: "E",
        scope: 'isolate',
        template: "<div>{{exposeAttribute}} {{anotherOne}}</div>",
        controller: Ctrl,
        //templateUrl: "mytemplate.html",
        link: function(scope, element, attr) {
            scope.exposeAttribute = attr.fieldName;
            scope.anotherOne = attr.train;
        }
    };
});
<div ng-app ng-controller="Ctrl">
    <div ng-init="t = (trains | filter:1)">    
        {{ t }}
        {{ trains | filter:1 }}
    </div>
    <div ng-if="true" ng-init="t = (trains | filter:2)">
    {{ t }}
    {{ trains | filter:2 }}
    </div>
</div>