我通过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
。为什么以及如何解决它。
答案 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" />