我的json数据看起来像
[{name:“a”,内容:[{name:“b”,内容:[{name:“c”,id:1},{...}]},{...}] },{name:“...”,内容:[...]}]
我希望把它放到一个选项中,“a”和“b”都是optionGroup,只有“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);
});
});
});
}
}
});
它工作正常,当我选择不同的选项时,我可以看到范围发生了变化。
但是我发现我无法设置选择的初始化值,然后我发现我无法在任何时候设置任何选择来控制“选择”,选择似乎成为单向绑定但我需要它成为两个-way binding。
示例jsfidle在这里:http://jsfiddle.net/sunny_jerry/SHxBp/
我该如何解决?
答案 0 :(得分:0)
这是一种让它工作的方法,只需在choice
$scope.$watch( 'choice', function( val ) {
elm.val( val );
});