2017-03-07 24 views
1

我有一個控制器,服務和ng選擇。AngularJs ng-init與服務的價值

控制器:

$scope.dicts = shareService.dict.obj; 

服務:

var dict = { 
    "obj": { 
     "companyCode" : [] 
    } 
} 

和HTML:

<select ng-model="companyCode" ng-options="company.value as company.name for company in dicts['companyCode'] track by company.value"> 

我的問題:當網站負載,在選擇的第一個值是空的。是的,「companyCode」是空的,但它是在init()中生成的。它顯示了company.name(選擇一個空白字段消除器後),但正如我所說,我需要一個默認值。不知道如何。是的,它需要以這種方式進行服務。

好的,主要的問題是,當ng-init被調用時,companyCode數組是空的,然後它被填充實際值。有沒有辦法在那之後運行ng-init?

+0

您需要的默認值? – Sajeetharan

+0

添加一些與控制器和服務 – Pradeepb

+0

相關的代碼,例如,來自「companyCode」的第一個值,例如 – egzaell

回答

0

使用ng init將值分配給模型或內部控制器,您可以將默認值分配給ng模型。刪除track by company.value它會阻止選擇框中的預選值。如果你想通過索引使用軌道。

下面是示例演示

angular.module("app",[]) 
 
.controller("ctrl",function($scope,shareService){ 
 
\t $scope.dicts = shareService.dictFunc(); 
 
}) 
 
.service('shareService',function(){ 
 
    var dict = { 
 
    "obj": { 
 
     "companyCode" : [{"name":"name1","value":"one"},{"name":"name2","value":"two"}] 
 
    } 
 
    } 
 
    this.dictFunc = function(){ 
 
    return dict.obj; 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 
    <select ng-init="companyCode = dicts.companyCode[0].value" ng-model="companyCode" ng-options="company.value as company.name for company in dicts['companyCode']" /> 
 
</div>