Javascript 输入数组在Angularjs中作为null传递

Javascript 输入数组在Angularjs中作为null传递,javascript,html,angularjs,asp.net-web-api,Javascript,Html,Angularjs,Asp.net Web Api,我有一个表单,其中通过WebApi显示数据库中的值。其中一个控件将具有值数组。我有一个场景,用户可以编辑和保存它(PUT函数) 控制器: $scope.Put= function () { $scope.item1 = []; $scope.item1 = $scope.Cast.split(','); var Movie1 = { _movieId: $scope.MovID, _title: $sc

我有一个表单,其中通过WebApi显示数据库中的值。其中一个控件将具有值数组。我有一个场景,用户可以编辑和保存它(PUT函数)

控制器:

$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
input是一个字符串数组,如果用户编辑它并
SAVE
,它会工作得很好,但是当我尝试编辑一些其他字段,如Id、Title,然后在不修改
Cast的情况下继续
SAVE
时,我会遇到类似

$scope.Cast.split不是一个函数
。原因和解决方法。

理想情况下,您应该在控制器中定义范围变量

$scope.MovID = '';
$scope.Movtitle= '';
$scope.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" />


这是打字错误
Cast1
还是
Cast
?是的……我已经编辑过了。感谢您必须在控制器中定义它:$scope.Cast='';
<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" />