带有过滤器覆盖值的Angularjs ngInit
我试图初始化一个过滤后的值,但没有成功。我将使用partial/ng include,以便变量的名称不能更改 我使用了AngularJSV1.0.2,也尝试了v1.1.1带有过滤器覆盖值的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
<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>