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

时间:2015-09-30 05:14:33

标签: 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: $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。为什么以及如何解决它。

1 个答案:

答案 0 :(得分: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" />