0

Я использую ui-bootstrap для typeahead в своем приложении.Как назначить значение для определения модели ng

<input type="text" ng-model="newItem.id" class="form-control"> 
<pre>Model: {{customSelected | json}}</pre> 
<input type="text" ng-model="customSelected" typeahead="asset as asset.asset_name for asset in assets | filter:{asset_name:$viewValue}" class="form-control"> 

Когда я выбираю значение автозаполнения, я могу видеть, что мои объекты напечатаны. Но проблема в том, что я использую объект newItem для установки значений формы и перехода к $http запросам, так как я могу установить customSelected.id на newItem.id?

Получение ошибки, когда я использую что-то вроде этого,

<input type="text" ng-model="newItem.id=customSelected.id" class="form-control"> 

Demo

ответ

0

Если вы хотите назначить выбранный assetid к newItem.id:

<input type="text" ng-model="newItem.id" typeahead="asset.id as asset.asset_name for asset in assets | filter:{asset_name:$viewValue}" class="form-control"> 

UPDATE (FIDDLE)

Вид:

<div ng-app="App"> 
    <div ng-controller="ctrl"> 
    <input type="text" ng-model="newItem.id" class="form-control" /> 

    <input 
     type="text" 
     ng-model="customSelected" 
     typeahead="asset as asset.asset_name for asset in assets | filter:{asset_name:$viewValue}" 
     class="form-control" /> 

    </div> 
</div> 

Ctrl:

function ctrl($scope){ 

    $scope.newItem = {}; 

    $scope.assets = [ 
    { 
     "id":"1", 
     "asset_reg_no":"AST1", 
     "asset_name":"Omega Shopping Complex" 
    }, 
    { 
     "id":"2", 
     "asset_reg_no":"AST2", 
     "asset_name":"Keedam Chicken Farm" 
    } 
    ]; 

    $scope.$watch('customSelected', function(asset, oldAsset){ 
    if(!asset && !oldAsset){ 
     return; 
    } 
    if(oldAsset && !asset){ 
     delete $scope.newItem.id; 
     delete $scope.newItem.asset_reg_no; 
     return; 
    } 
    $scope.newItem.id = asset.id; 
    $scope.newItem.asset_reg_no = asset.asset_reg_no; 
    }); 

} 
+0

Здесь возникает проблема, когда я выбираю пункт в окне отображается текст id вместо текста, я ожидаю, что текст с автозаполненным будет отображаться там. Когда я выберу свой предыдущий код, я получу результат, подобный этому '' { «id»: «1», «asset_reg_no»: «AST1», «asset_name»: «Omega Shopping Complex», «asset_type_id»: «2», «описание»: «Торговый комплекс в Каликуте», «created_on»: «2014-01 -28 16:03:23 ", " asset_type_name ":" Building " }' 'и я хочу присвоить' 'id'' одному скрытому текстовому полю и' 'asset_reg_no' другому тексту. – devo

+0

Нужен плункер здесь. – Stewie

+0

См. Jsfiddle здесь http://jsfiddle.net/ue6jN/1/ – devo

0

Если я вас понимаю, это demo является то, что вы хотите

function ctrl($scope){ 
     $scope.assets = [{"id":"1","asset_reg_no":"AST1","asset_name":"Omega Shopping Complex","asset_type_id":"2","description":"Shopping Complex in Calicut","created_on":"2014-01-28 16:03:23","asset_type_name":"Building"},{"id":"2","asset_reg_no":"AST2","asset_name":"Keedam Chicken Farm","asset_type_id":"2","description":"Chicken farm in Valivida","created_on":"2014-01-28 16:04:06","asset_type_name":"Building"}]; 

    $scope.newItem = {}; 
    $scope.$watch('customSelected', function(asset, oldAsset){ 
    $scope.newItem.id = asset.id; 
    $scope.newItem.text = asset.asset_name; 
     }); 

    } 
Смежные вопросы