2015-06-30 129 views
1

所以我有一個選擇集,我想默認爲登錄用戶的狀態。返回的狀態JSON是StateCode,例如"MI"角度選擇沒有得到設置從ng模型分配

<div> 
    <select 
    name="ParentState" 
    ng-model="selectedState" 
    ng-options="s.StateCode for s in cStates track by s.StateID | orderBy:'StateCode'"> 
    </select> 
</div> 

,並在我的控制器

var init = function() { 
    angular.forEach(xStates, function(xS) { 
    if (xS.StateCode == xParentState) { 
     $scope.selectedState = xS.StateID; 
     $scope.vName = "It's working!" + $scope.selectedState; 
    } 
    }); 
} 

init(); 

在init函數的最後一行剛寫出來{{ vName }},這樣我可以看到的功能是工作和$scope.selectedState值是正確的,例如"MI"將爲23,但是頁面加載時的選擇不會設置爲"MI"

回答

1

我認爲在這裏有幾件事情可能會出錯,並且我對您的期望結果採取了一些最佳猜測。首先,您的標記中的s.StateCode for s...將填寫<option>StateCode。你提到你希望看到"MI",所以讓我們改爲StateName。其次,默認$scope.selectedState作爲我們的模型,沒有必要指定StateId - 只需選擇對象,AngularJS將滿足默認我們的ng-options。這是一個完整的例子,對我以後的想法有一些解釋。

<select 
    name="ParentState" 
    ng-model="selectedState" 
    ng-options="s.StateName for s in xStates track by s.StateID | orderBy:'StateCode'"> 

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

    $scope.xStates = [{'StateCode': 1, 'StateID': 'A', 'StateName': 'AL'}, 
        {'StateCode': 23, 'StateID': 'B', 'StateName': 'MI'}, 
        {'StateCode': 50, 'StateID': 'C', 'StateName': 'Hawaii'}]; 

    angular.forEach($scope.xStates, function (xS) { 
     if (xS.StateCode === 23) { // -- for demo simplicity 
      $scope.selectedState = xS; 
     } 
    }); 
}]); 

JSFiddle Link - 工作演示

+0

我應該提到,正在傳遞的JSON是'[{「STATEID: '1',StateCode: 'AL' ...}] ' – Spacemancraig

+0

我繼續編輯JSFiddle以更接近我的代碼,它正在工作......所以我不確定它爲什麼不能在我的環境中工作。 https://jsfiddle.net/spacemancraig24/1bgeknh5/2/我應該提到這是一個Web部件設置作爲Sharepoint 2010中的一個窗體 – Spacemancraig

+0

我不能以消極的方式看到你的環境對此產生影響。你在遇到什麼?而且,我必須在JSON設置上做出最佳猜測。 – scniro