0

フィルター処理された値を初期化しようとしましたが成功しませんでした。変数の名前を変更できないように、partial/ng-include を使用します。

私はangularjs v1.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>

出力

[2] [1]
[2] [2]

これがこの例です-> http://jsfiddle.net/9q5D4/4/

4

4 に答える 4

2

式に注意してくださいng-init(特に、新しい変数を初期化する場合)。あなたの例では、2つの別々の式を実行しています:t = trainsfilter:<X>

使用する必要がありますt = (trains | filter:<X>)

<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>

jsFiddle: http: //jsfiddle.net/9q5D4/2/

于 2013-01-09T15:56:13.177 に答える
1

これがあなたが望むものかどうかわかりません...しかし、ng-initとng-includeを組み合わせるためにディレクティブを使用できます:

HTML:

<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>

JS:

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;
        }
    };
});

出力は次のとおりです。

1 2

2 17

http://jsfiddle.net/9q5D4/5/

于 2013-05-14T06:23:41.953 に答える
0

正確な理由や方法を確認していませんが、ng-init が機能する前に ng-if 属性を配置するようです。

angular 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>
于 2015-07-06T21:16:56.763 に答える