#angularjs #angularjs-ng-model #ui-select
#angularjs #angularjs-ng-model #ui-select
Вопрос:
Я попытался установить ng-init и указать начальное значение ng-model, все не удалось
$scope.newSubItem = function (scope) {
var modal = $uibModal.open({
backdrop: 'static',
templateUrl: 'catalog/inputForm/partial/add_new_softwareOnTree.html',
scope: newScope,
controller: ['$scope', '$uibModalInstance','_', function ($scope,
$uibModalInstance,_) {
$scope.nodeRelationships4CatalogAddingSoftware =
codeTableService.nodeRelationships4CatalogAddingSoftware;
$scope.targetNodes4ContainedInOrDependsOn =
targetNodes4ContainedInOrDependsOn;
$scope.nodes = nodes;
$scope.newSoftware = {};
var targetNodeId = nodeData amp;amp; nodeData.id;
$scope.newSoftware.target =
_.find(targetNodes4ContainedInOrDependsOn,function (o) {
return o.name === targetNodeId;
});
$scope.componentsQueryUrl =
CONSTANTS.SERVICE_BLUEPRINT_COMPONENTS.PATH "?query";
$scope.submit = function () {
catalogCustomizedSoftwareComponentConfigService.onAddSoftwareSubmit(
$scope,
$scope.newSoftware,
$scope.targetNodes4ContainedInOrDependsOn);
$uibModalInstance.close($scope.targetNodes4ContainedInOrDependsOn);
};
}]
});
<div class="form-group row">
<label class="col-lg-2 col-md-2 col-sm-2 control-label required">{{'Relationships' | translate}}</label>
<div class="col-lg-9 col-md-9 col-sm-9">
<div class="input-group">
<ui-select ng-model="newSoftware.relationship"name="nodeRelationships"
required>
<ui-select-match placeholder="{{'Please select a
relationship'|translate}}">{{$select.selected.name|translate}}
</ui-select-match>
<ui-select-choices repeat="item.id as item in
nodeRelationships4CatalogAddingSoftware | translateItemFilter: {
name:$select.search}">
<div ng-bind-html="item.name | translate | highlight: $select.search">
</div>
</ui-select-choices>
</ui-select>
</div>
<span class="error" ng-show="addSoftWareForm.nodeRelationships.$touched amp;amp; addSoftWareForm.nodeRelationships.$error.required">
{{'Please select a relationship'|translate}}
</span>
</div>
codeTableService.nodeRelationships4CatalogAddingSoftware =
[
{id: "cloudify.relationships.contained_in", name: "contained_in"},
{id: "cloudify.relationships.depends_on", name: "depends_on"}
]
Я хочу установить начальное значение ui-select, пока значение не отображается.
Я ожидаю установить начальное значение ui-select равным «contained_in»
$scope.newSoftware.relationship = codeTableService.nodeRelationships4CatalogAddingSoftware[0].name
И выпадающий список содержит два значения:
["contained_in", "installed_to"]
Комментарии:
1. Как выглядит объект nodeRelationships4CatalogAddingSoftware? У него есть I’d и имя. Они одинаковые? Contined_in — это ввод и имя? Я спрашиваю только потому, что вы говорите, что в раскрывающемся списке отображается contains_in, который является именем. Какой идентификатор?
2. тип программного обеспечения nodeRelationships4CatalogAddingSoftware: массив
Ответ №1:
Возможно, все, что вам нужно, это присвоить модели начальное значение. Я не думаю, что оно будет отображаться во внешнем интерфейсе.
Комментарии:
1. Я не могу понять, когда я пытаюсь присвоить начальное значение модели, например
javascript $scope.newSoftware.relationship = "contained_in";
, ui-select будет отображать none при загрузке страницы.2. Вы устанавливаете
$scope.newSoftware.relationship = "contained_in";
, но при повторении вы устанавливаете значение выбранного элемента на item.id , который не является «contained_in». Попробуйте установить начальное значение$scope.newSoftware.relationship = nodeRelationships4CatalogAddingSoftware[0],id;
, если вы хотите использовать имя вместо этого, изменитеrepeat="item.name as item in nodeRelationships4CatelogAddingSoftware"
, и тогда вы сможете использовать имя.3. @KerouacJack Разве это не то поведение, которое вы хотели? Я неправильно понял?
4. @kendavidson Я пробовал $scope.newSoftware.relationship = codeTableService.nodeRelationships4CatalogAddingSoftware[0].name; в то время как браузер получает ошибку типа: невозможно установить свойство ‘relationship’ неопределенного
5. Это означает, что newsoftware не определено. Вы можете справиться с этим, просто используйте обозначение объекта, чтобы установить его.