2015-09-04 36 views
0

在ng模型中,我想設置一個在我的作用域中定義的默認值,但該值無法識別。Angular:在ng-model中放入一個設置在範圍中的值

這裏是我的控制器:

$scope.defaultRole = "Admin"; 

我的觀點:

<input type="text" 
class="form-control" ng-model="user.role='{{defaultRole}}'"> 

,但我有{{defaultRole}}的聯繫而不是我輸入文本。也許這是一個格式化的問題,但我不知道如何使其工作。

注意:我可以直接把ng-model =「user.role ='Admin'」,但是我希望從範圍中得到它。

謝謝你的幫助!

回答

1

你不明白ngModel是如何工作的。 ngModel需要一個可分配的角度表達式。表達式受到雙向限制。這意味着,

  • 來填充輸入字段,角計算表達式
  • 當在輸入字段中的改變輸入的值,變量,所述ngModel表達是指被設定爲所輸入的值

因此,所有你需要的是

<input type="text" class="form-control" ng-model="defaultRole"> 

將讀取的defaultRole變量,其值填充字段,反之亦然。

如果你想,而是填充user.role與輸入值,以及該領域有默認defaultRole值,那麼它應該是

<input type="text" class="form-control" ng-model="user.role"> 

和控制器應該做

$scope.user.role = $scope.defaultRole; 

或者,如果用戶不存在尚未

$scope.user = { 
    role: $scope.defaultRole 
}; 

給init請將其user.role設置爲默認值。

0

您可以使用ng-init來做到這一點。 ng-model是不是假設處理作爲。這將通過角度直接完成。

<input type="text" class="form-control" ng-model="user.role" ng-init="user.role = defaultRole"> 

Working Fiddle

+1

此[不是ngInit的適當用途](https://docs.angularjs.org/api/ng/directive/ngInit)。 「'ngInit'唯一適當的用法是爲'ngRepeat'的別名特殊屬性」。雖然這個*可能會起作用,但是'ngInit'是一個指令,具有優先級,這意味着它不能保證按照您預期的順序執行。有可能這個值可能是'未定義的',因爲'ngInit'還沒有處理。 **僅適用於初始化變量的恰當方法是使用控制器。 – Claies

+0

嗨,Pierre-Alexandre。感謝你簡單而且容易回答的問題。然後,我只需刪除{{}}。我意識到,ngModel也處理作爲,但我會按照你的意見,並使用ng-init來代替。 – user708683

+0

現在我想檢索在我的2 dropdownlist中選擇的值,將它們與分隔符' - '連接,然後將它們設置爲ng-init。我能夠檢索所選的值,但我如何連接它們?我嘗試了這樣的事情:ng-init =「user.role = defaultRole - name_selected --adress_selected」但它不起作用。你有什麼想法?謝謝 – user708683