gpt4 book ai didi

javascript - 使用自定义指令后,angularjs ng-model 不起作用

转载 作者:行者123 更新时间:2023-11-30 06:32:27 27 4
gpt4 key购买 nike

我的 json 数据看起来像

[{name:"a", content:[{name:"b", content:[{name:"c", id:1}, {...}]}, {...}]}, {name:"...", content:[...]}]

我想把它放到一个选择中,其中“a”和“b”都是选项组,只有“c”是选项。像这样:

a
-b

 c

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

它工作正常,当我选择不同的选项时我可以看到范围发生变化。

但是我发现我不能设置choice的初始化值,然后我发现我不能设置任何choice来控制任何时候的“select”,choice似乎变成了单向绑定(bind)但我需要它变成了两个- 方式绑定(bind)。

示例 jsfidle 在这里:http://jsfiddle.net/sunny_jerry/SHxBp/

我该如何解决?

最佳答案

这是一个让它工作的方法,只需在 choice 上设置一个观察者

$scope.$watch( 'choice', function( val ) {
elm.val( val );
});

http://jsfiddle.net/SHxBp/2/

关于javascript - 使用自定义指令后,angularjs ng-model 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16702373/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com