将选择集成到AngularJS中

时间:2014-10-17 10:10:19

标签: javascript jquery angularjs

我试图将Chosen(jquery插件)与AngularJS集成,但我无法填充选择中的任何选项。

我开始关注本教程:

http://onehungrymind.com/angularjs-chosen-plugin-awesome/

并创建了这个简单的示例(在' Chosen Angular directive doesn't get updated')的帮助下:

http://plnkr.co/edit/BzLAdotxKVI15t5phNAA?p=preview

module.directive('chosen', function(){

var directive = {};

    directive.restrict = 'A';


    directive.link = function(scope, element, attrs) {

        var list = attrs['chosen'];

        scope.$watch(list, function () {
            element.trigger('chosen:updated');
        });

        scope.$watch(attrs['ngModel'], function() {
            element.trigger('chosen:updated');
        });

        element.chosen();
    };

    return directive;
});

没有错误,但没有向列表中添加任何内容。如果我删除"选择"来自select的属性,它按预期工作,所以我知道它不是绑定的问题。

然后我尝试使用角度选择的包装器:

https://github.com/localytics/angular-chosen (在此问题中引用 - Angular.js Chosen integration和(可能)AngularJS Chosen not working/updating

并创建了这个: http://plnkr.co/edit/NmQiDgU1xOK8l9MtTcjS?p=preview

哪个问题相同。

更新 为了回应 Jose M - 我看了ui-select,但它需要很多(不直观)标记而不仅仅是属性,所以我排除了它。

更新 回答** jd17 * - *来自以下答案的工作人员: http://plnkr.co/edit/2v3BWVL0xFgQVce0MPXR?p=preview

1 个答案:

答案 0 :(得分:1)

在你的app.js中,为什么你重新定义了“选择”指令,因为你正在使用Angular Chosen插件?我在你的第二个plnkr中修改了你的app.js,如下所示,事情很顺利。

var app = angular.module('myApp',['localytics.directives']); // inject the chosen

app.controller('TestController', ['$scope','$http',
function TestController($scope,$http){

  $scope.url = 'testValues.json';
  $scope.wordList = [];
  $scope.selectedWord = {};

  $scope.loadWords = function(){
    $http.get($scope.url).then(function(result){
      $scope.wordList = result.data;
    });
  };

  $scope.loadWords();
}
]);