2016-03-20 4 views
0

в угловых (1.5) У меня есть форма с двумя полями ввода:набор поле ввода на основе другого поля в угловых

  • ID
  • URL-

правила:

  • Если поле идентификатора пуст, поле URL должно быть пустым
  • Если поле URL вручную установлен, то он не должен изменяться автоматически
  • В противном случае поле URL должен быть «http://myurl/„+ ID +“. TXT»

Как этого добиться?

ответ

0

Используйте $watch на поле ID. Если поле ID изменено, будет вызываться функция часов.

$scope.$watch('$scope.ID', function() { 
    $scope.url = 'http://myurl/' + $scope.ID + '.txt'; 
}, true); 
+0

я не думаю, что это будет работать. «Если поле URL установлено вручную, оно не должно автоматически меняться». Изменение идентификатора перезапишет введенный вручную URL-адрес –

+0

Согласен, как это будет заботиться о том, чтобы не изменять URL-адрес, если он введен вручную? – Gabs00

+0

да, вы правы .. если пользователь сначала меняет поле ввода ... – ziaulain

1
<input type="text" name="url" 
     ng-model="url" 
     ng-model-options="{ getterSetter: true }" /> 

...

function defaulUrl() { 
     if $scope.ID { 
      return 'http://myurl/'+$scope.ID+'.txt'; 
     } 

     return '' 
    } 

    var _url = defaultURl(); 

    $scope.url = { 
     url: function(url) { 

      return arguments.length ? (_url= url) : defaulUrl(); 
     } 
    } 

};

0

Вот скрипка я сделал, что отвечает вашему ТРЕБОВАНИЕ: fiddle

Код

//HTML 

<div ng-app="myApp" ng-controller="MyController"> 
    ID <input type="text" ng-model="data.id" ng-change="onIDChange()"/> 
    URL <input type="text" ng-model="data.url" ng-change="onManualUrlChange()"/> 
</div> 

//JS 

angular.module('myApp',[]) 
.controller('MyController', ['$scope', function($scope){ 
    $scope.data = { 
    id:'', 
    url:'' 
    } 
    $scope.manualUrl = false; 

    $scope.onIDChange = function(){ 
    if(!$scope.manualUrl){ 
     if($scope.data.id === ''){ 
     $scope.data.url = ''; 
     } else { 
     $scope.data.url = "http://myurl/" + $scope.data.id + ".txt"; 
     } 
    } 
    } 

    $scope.onManualUrlChange = function(){ 
    $scope.manualUrl = true 
    }; 
}]); 
Смежные вопросы