2015-09-30 3 views
2

У меня есть форма, в которой я показываю значения из моей БД через WebApi. Один из элементов управления будет иметь массив значений. У меня есть сценарий, в котором пользователь может редактировать и сохранять его (функция PUT).Массив входов передается как null в Angularjs

Контроллер:

$scope.Put= function() { 
     $scope.item1 = []; 
     $scope.item1 = $scope.Cast.split(','); 
     var Movie1 = { 
      _movieId: $scope.MovID, 
      _title: $scope.Movtitle, 
      _releaseDate: $scope.Movdate, 
      _rating: $scope.Movrate, 
      _cast: $scope.item1 
     }; 
     var Result-= MyService.Update($scope.MovID, Movie1); 
     Result.then(function (pl) { 
      $scope.Message = "Updated Successfuly"; 
     } 

HTML:

<input type="text" ng-model="MovID" class="spacebox" size="30" /> <br /> 
<input type="text" ng-model="Movtitle" class="spacebox" size="30" /> 
<input type="text" ng-model="Cast" class="spacebox" size="30" /> 
<input type="button" ng-value="Edit" ng-click="enable()" style="margin-left: 250px; border-radius: 5px;" /> 

Cast вход, который представляет собой массив из строки отлично работает, если пользователь редактировать его и SAVE, но когда я пытаюсь изменить некоторые другие поля, такие как Id, Заголовок и перейти к save без изменения Cast Я получаю ошибку, например
$scope.Cast.split is not a function. Почему и как это можно решить.

+0

Является ли это опечатка '' Cast1' или Cast'? –

+0

да, это ... и я отредактировал его. thanks –

+0

Просто определите его в контроллере: $ scope.Cast = ''; – o4ohel

ответ

0

В идеале вы должны определить переменные области видимости в вашем контроллере.

$scope.MovID = ''; 
$scope.Movtitle= ''; 
$scope.Cast = ''; 

Я предпочитаю создавать объект контекста для хранения переменных области. Чтобы узнать, почему, читать это - http://www.thinkingmedia.ca/2015/01/learn-how-to-use-scopes-properly-in-angularjs/#use-data-objects-for-primitive-types

$scope.context = { 
    MovID : '', 
    Movietitle : '', 
    Cast : '' 
}; 

И ваш HTML должен выглядеть -

<input type="text" ng-model="context.MovID" class="spacebox" size="30" /> <br /> 
<input type="text" ng-model="context.Movtitle" class="spacebox" size="30" /> 
<input type="text" ng-model="context.Cast" class="spacebox" size="30" /> 
Смежные вопросы