Мои данные JSON выглядит какangularjs нг-модель не работает после того, как с использованием собственного определяется директивой
[{имя: "а", содержание: [{имя: "б", содержание: [ {name: "c", id: 1}, {...}]}, {...}]}, {name: "...", content: [...]}]
и я хочу поместить его в выборку, которая «a» и «b» - все опцииGroup, только опция «c» является опцией. так:
-b
с
Образец jsfidle здесь: http://jsfiddle.net/sunny_jerry/SHxBp/
Кажется "ngOptions" не может удовлетворить мои требования , поэтому я определяю такую директиву:
<select class="compo-tree" x-compo-tree colleges="colleges" ng-model="choice"></select>
directive('compoTreeNew', function($compile) {
return {
restrict: 'A',
scope: {
colleges: "=colleges",
choice: "=ngModel"
},
link: function($scope, elm){
$scope.$watch("colleges", function(){
angular.forEach($scope.colleges, function(college) {
elm.append($("<optgroup>").attr("label", college.name));
angular.forEach(college["departments"], function(department) {
var optGroup = $("<optgroup>").attr("label", '- ' + department.name);
angular.forEach(department['disciplines'], function(discipline) {
optGroup.append($("<option>").attr("value", discipline.id).text(discipline.name));
if (!$scope.choice) { $scope.choice = discipline.id; }
});
elm.append(optGroup);
});
});
});
}
}
});
Он отлично работает, и я могу видеть изменения области, когда я выбираю различные параметры.
Но я обнаружил, что не могу установить значение инициализации по выбору, а затем я обнаружил, что не могу выбрать какой-либо выбор для управления «выбором» в любое время, выбор кажется односторонним, но мне нужно, чтобы оно стало двусторонняя привязка.
Образец jsfidle здесь: http://jsfiddle.net/sunny_jerry/SHxBp/
Как я могу это исправить?
Одна вещь, чтобы иметь в виду, что каждый элемент имеет только один объем. Поскольку ваша директива 'compoTreeNew' использует область выделения, это единственная область действия в элементе и она отключена от родительской области. Это может иметь побочный эффект взлома встроенной функции ng-model/selectController для этого же элемента. – jpsimons
@ darkporter Вы имеете в виду, что мне нужно реализовать ng-model самостоятельно? – Sunny