2016-12-16 1 views
0

Я пытаюсь упростить свой контроллер. Поэтому я попытался установить переменную для заполнения моего списка флажков от внешнего контроллера. Является ли это возможным?Set Angular checkbox repeat от внешнего контроллера

Здесь пока мой текущий код http://jsfiddle.net/ilmansg/Lx37kr3e/1/

VIEW HTML

<div ng-controller="AdminEventsCtrl"> 
    <h1>Array 1</h1> 
    <ul> 
    <li ng-repeat="item in array1"> 
     <input type="checkbox" ng-model="formData.value1[item.value]" value="{{item.value}}" /> 
     {{item.text}} 
    </li> 
    </ul> 

    <h1>Array 2</h1> 
    <script> 
    array2 = [{ 
    text: 'Option 1', 
    value: 'opt1' 
    }, { 
    text: 'Option 2', 
    value: 'opt2' 
    }, { 
    text: 'Option 3', 
    value: 'opt3' 
    }, { 
    text: 'Option 4', 
    value: 'opt4' 
    }]; 
    </script> 
    <ul> 
    <li ng-repeat="item in array2"> 
     <input type="checkbox" ng-model="formData.value1[item.value]" value="{{item.value}}" /> 
     {{item.text}} 
    </li> 
    </ul> 

    <pre>Array1= {{array1}}</pre> 
    <pre>Array2= {{array2}}</pre> 
</div> 

SCRIPT JS

var myApp = angular.module('myApp', []); 

function AdminEventsCtrl($scope) { 
    $scope.formData = {}; 

    $scope.array1 = [{ 
    text: 'Option 1', 
    value: 'opt1' 
    }, { 
    text: 'Option 2', 
    value: 'opt2' 
    }, { 
    text: 'Option 3', 
    value: 'opt3' 
    }, { 
    text: 'Option 4', 
    value: 'opt4' 
    }]; 
} 

ответ

1

Нет это не представляется возможным, потому что Угловая не будет иметь ни малейшего представления, которые область действия, чтобы приложить массив , Вот упрощенное решение проблемы вашего контроллера: бесполезный:

Имейте два массива, по одному для каждого имущества text и value.

function AdminEventsCtrl($scope) { 
    $scope.formData = {}; 
    $scope.array1 = []; 

    var t = ['Option 1', 'Option 2', 'Option 3']; 
    var v = ['opt1', 'opt2', 'opt3']; 

    for(i=0;i<t.length;i++){ 
     $scope.array1.shift({text:t[i],value:v[i]}); 
    } 

} 

Это может быть немного больше кода, но он выглядит намного менее грязным. Он также позволяет легко добавлять новые значения.

+0

Хмм, если его только одна переменных действительно она Wouldnt выглядит слишком грязно. но если у меня есть несколько списков флажков, которые будут заполнены. Он по-прежнему будет выглядеть как беспорядок :( – ilmansg

0

Я в конечном итоге сделать фабрику для того чтобы держать все свои массивы, а затем использовать этот завод в моем контроллере