AngularJS.如何将模型传递给自定义可编辑指令?(我正在尝试找到从ui-select更新模型的最佳方法)



我有指令,允许将ui.select与xeditable集成。这是我的指示:

var Dashboard = angular.module('Dashboard');
Dashboard.directive('editableUiSelect', ['editableDirectiveFactory', 'editableNgOptionsParser',
        function(editableDirectiveFactory, editableNgOptionsParser) {
            return editableDirectiveFactory({
                directiveName: 'editableUiSelect',
                inputTpl: '<span></span>',
                scope: {
                    eNgModel: "="
                },
                render: function() {
                    this.parent.render.call(this);
                    var parsed = editableNgOptionsParser(this.attrs.eNgOptions);
                    var filter = " | filter: $select.search";
                    var html = "<ui-select ng-model='eNgModel' theme='bootstrap' style='width: 150px'>"+ 
                        "<ui-select-match><span ng-bind='$select.selected.name'></span></ui-select-match>"+
                        "<ui-select-choices repeat='"+parsed.ngRepeat+filter+"'>"+"<span ng-bind='"+parsed.locals.displayFn+"'></span>"+
                        "</ui-select-choices></ui-select>";
                    this.inputEl.removeAttr('ng-model');
                    this.inputEl.removeAttr('ng-options');
                    this.inputEl.html(html);
                }
            });
        }]);

我想动态地将模型传递给我的指令,但xeditable editableDirectiveFactory似乎不允许我这样做。结果,我无法保存我从这个ui选择中选择的值。我能做些什么来解决这个问题?

已解决(请参阅下面的答案),但我的方法只是一个丑陋的变通方法。我需要一个能向我展示解决这个问题的最佳方法的人。

当前我通过将setModel方法添加到ui-selecton-select属性来解决此问题。因此,通过这种方式,我的html变量更改为:

var html = "<ui-select ng-model='"+this.name+"' theme='bootstrap' style='width: 150px' on-select='setModel($item)'>"+ 
                        "<ui-select-match><span ng-bind='$select.selected.name'></span></ui-select-match>"+
                        "<ui-select-choices repeat='"+parsed.ngRepeat+"'>"+"<span ng-bind='"+parsed.locals.displayFn+"'></span>"+
                        "</ui-select-choices></ui-select>";

接下来,我只是向每个控制器添加setModel方法。(我指的是控制器,在这个模板中我使用这个指令)。方法示例:

$scope.setModel = function(item) {
                if (item.hasOwnProperty('property')) {
                    $scope.object1 = item;
                } else {
                    $scope.object2 = item;
                }
            }

最后,我在保存方法中得到了$scope.objectX值。

这种方法只是一种丑陋的变通方法,所以我真的需要一个人,他能向我展示最好的方法。

相关内容

  • 没有找到相关文章

最新更新