2017-03-07 5 views
1

私はコントローラ、サービス、およびng-selectを持っています。サービスからの値を持つ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

yup、例えば "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>

関連する問題