AngularJs选择选项绑定问题共享模式

时间:2015-08-12 13:24:38

标签: c# angularjs razor bootstrap-modal

我有一个问题,我在两个页面之间共享一个模态,两个页面都使用相同的angularJs版本(v1.2.14),并且两个页面都调用完全相同的指令(ui.select2)。模态内部的选择框在一个页面上工作,而在另一个页面上,它只是作为默认选项保留。

作为一个假设,我尝试以不同的风格实现选择框,例如选项上的ng-repeat,而不是使用轨道。然而,这会导致其他页面选择要中断的选项。我只能让一页工作,另一页打破。

奇怪的是,在后台绑定值正在正确更新:

<div class="col-md-10">
    <select ui-select2="{width: '100%'}" class="form-control" 
     ng-model="Model.DocumentTypeId" 
     ng-options="documentType.DocumentTypeId as documentType.DocumentTypeDescription for documentType in Model.DocumentTypes track by documentType.DocumentTypeId">
         <option value="">Select Document Type</option>
     </select>
</div>

如果你对为什么会这样做有任何建议,那就太好了。

以下是控制器的严重截断视图:

module Views.TMDocumentUpload {
    export class DocumentUpload implements IDocumentUpload {
        public static SetupDocumentUploadDialog = "onSetupDocumentUploadDialog";

        public Init(model: DocumentUploadViewModel) {
            var self = this;

            if (self.$scope.Model.HideDocumentType || self.$scope.Model.DocumentTypeId == null) {
                if (self.$scope.Model.DocumentTypes.length == 1) {
                    self.$scope.Model.DocumentTypeId = self.$scope.Model.DocumentTypes[0].DocumentTypeId;
               }
            }
        }

        constructor(public $scope: IDocumentUploadScope, $http: ng.IHttpService, $timeout: ng.ITimeoutService) {
            $scope.isAllSelected = true;
            $scope.ShareConfig = [];
            $scope.Model.DisplayShareOptions = false;
            $scope.Init = () => {
                var self = this;
                $scope.$on(DocumentUpload.SetupDocumentUploadDialog,
                    (e: ng.IAngularEvent, args?: Views.TMDocumentUpload.DocumentUploadViewModel) => {
                        self.$scope.Model = new DocumentUploadViewModel();
                            $http.get("/GetInitialModel")
                                .success(function (data: DocumentUploadViewModel) {
                                    angular.extend(data, args);
                                    self.Init(data);
                                });
                    });
            };
    }
}
DocumentUpload.$inject = ["$scope", "$http","$timeout"];
}

1 个答案:

答案 0 :(得分:1)

我已经通过删除ui-select2解决了这个问题,这似乎与我的第二页中的另一个指令产生了某种冲突。