我正在根据本教程为ChosenJS插件创建一个角度指令:https://www.youtube.com/watch?v=8ozyXwLzFYs
我想要做的是在选择值时更新模型。
function Foo($scope) {
$scope.legalEntitiesList = [
{ name: 'Foo' },
{ name: 'Bar' }
];
$scope.legalEntity = { name: 'Foo' };
}
myApp.directive('chosen', ['$timeout', function($timeout) {
var linker = function(scope, element, attrs, ngModel) {
if (!ngModel) return;
element.addClass('chzn-select');
$(element).chosen()
.change(function(e) {
console.log(ngModel.$viewValue);
});
scope.$watch(attrs.chosen, function() {
$(element).trigger('liszt:updated');
});
}
return {
restrict: 'A',
scope: true,
require: '?ngModel',
link: linker
}
}]);
这是一个小提琴:http://jsfiddle.net/dkrotts/MQzXq/7/。如果选择其他选项,则不会更新模型值。
答案 0 :(得分:2)
如果你修改了选择以绑定到legalEntity.name
,而不仅仅是legalEntity
你的小提琴。
<select id="legalEntityInput" chosen="legalEntitiesList" ng-model="legalEntity.name" ng-options="legalEntity.name for legalEntity in legalEntitiesList" data-placeholder="Select..."><option></option></select>
有关示例,请参阅此updated fiddle。
答案 1 :(得分:2)
我想将此添加为评论,但我缺乏声望点。不过请注意,较新版本的Chosen使用活动chosen:updated
代替liszt:updated
- 感谢视频,Dustin!