AngularJS +选择JS更新模型

时间:2012-11-28 19:19:37

标签: javascript angularjs

我正在根据本教程为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/。如果选择其他选项,则不会更新模型值。

2 个答案:

答案 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!