2016-11-01 2 views
0

После моего один JSнеобходимо получить доступ массива из одного JS к другим

var ruleField = [ 
{ 
    id: "T1", 
     datastore: "", 
     table: "SENSORS", 
     columns: ["SNS_ID","HOST_ID","SESSION_ID"], 
     tableHeaders: ["SNS ID","HOST ID","SESSION ID"] 
} 
]; 

в другом JS мне нужно, чтобы получить доступ столбцов массива в настройках раскрывающегося

<select name="child.KEY_NAME" ng-if="child.KEY_NAME != 'Host' && child.KEY_NAME != 'Sensor' && child.KEY_NAME != 'Operator' && child.KEY_NAME != 'Value'" class="form-control" ng-model="temp.condition[$index][child.KEY_NAME]"" ng-disabled="readonly" ng-change="selectedOption1(selectAction);displayActionParam()"> 
    <option ng-repeat="field in ruleField.columns track by $index" value= "{{ field }}" >{{ field }}</option> 
</select> 
+0

ruleField - это массив, поэтому вам нужно получить к нему доступ с помощью правила indexField [0] .columns –

+0

Возможно, вам придется назначить 'window.ruleField =' или включить его в '$ scope' в зависимости от вашего контекста – slezica

ответ

0

Вы должны назначить var ruleField для a $scope varaible для использования в угловых директивах просто добавьте ниже строки для работы.

$scope.ruleField = angular.copy(ruleField); 

Измените выражение в нг-повтора в ng-repeat="field in ruleField[0].columns track by $index"

var app = angular.module('app',[]); 
 
app.controller('Ctrl',function($scope,$filter){ 
 

 

 
var ruleField = [ 
 
{ 
 
    id: "T1", 
 
     datastore: "", 
 
     table: "SENSORS", 
 
     columns: ["SNS_ID","HOST_ID","SESSION_ID"], 
 
     tableHeaders: ["SNS ID","HOST ID","SESSION ID"] 
 
} 
 
]; 
 
    
 
    $scope.ruleField = angular.copy(ruleField); 
 
    }); 
 

 

 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="app" ng-controller="Ctrl"> 
 
<select name="child.KEY_NAME" class="form-control" ng-model="temp.condition[$index][child.KEY_NAME]" ng-disabled="readonly" ng-change="selectedOption1(selectAction);displayActionParam()"> 
 
    <option ng-repeat="field in ruleField[0].columns track by $index" value= "{{ field }}" >{{ field }}</option> 
 
    </select> 
 
                         
 
                         </div>

0

Если добавить свой первый файл JS с <script> тегом ПЕРЕД ваш угловой код (директива, контроллер , и т. д.) вектор ruleField должен быть доступен из любого сценария, а как @Adrian Brand говорит, что у вас есть для доступа к массиву из его индекса, в этом случае ruleField[0].columns, как только все это будет сделано, вы сможете использовать его и манипулировать им.

Смежные вопросы