[英]Checkboxes with array model in angularjs using asp.mvc
I am using Asp.MVC 5 for an application and I want to generate many checkboxes with different angularjs models, and I thought the best option is by using array model in angularjs. 我正在为应用程序使用Asp.MVC 5,并且我想使用不同的angularjs模型生成许多复选框,我认为最好的选择是在angularjs中使用数组模型。 I tried the code below inside a
foreach
: 我在
foreach
尝试了以下代码:
@{
int i = 0;
foreach (var selectedVesselViewModel in Model.SelectedVesselViewModels)
{
using (Html.BeginForm("SelectNotificaiton", "Admin", new { area = "DashBoard" }, FormMethod.Post, new { id = "filterVesselsForm_" + i}))
{
@Html.HiddenFor(item => selectedVesselViewModel.VesselId, new {ng_model= "SelectedVessels[" + i + "].VesselId" })
<li class="row">
<div class="col-md-10">
<a href="#" class="text-admin-area">
@selectedVesselViewModel.VesselName
</a>
</div>
<div class="col-md-2">
<div class="pull-right">
<div class="checkbox checkbox-inline">
@Html.CheckBoxFor(item => selectedVesselViewModel.Selected,
new {id = "SelectedVesselViewModels_"+i+"__Selected",
onchange ="document.getElementById('filterVesselsForm_"+i+"').submit()",
ng_model = "SelectedVessels[" + i + "].Selected"
})
<label for="SelectedVesselViewModels_@(i++)__Selected"></label>
</div>
</div>
</div>
</li>
}
}
}
i
variable is an incrementing variable: i
变量是一个递增变量:
in the angularjs controller I have something like this: 在angularjs控制器中,我有这样的东西:
(function (app) {
"use strict";
app.controller("DashboardCtrl", ['$scope',
function ($scope) {
function init() {
// $scope.SelectedVessels = [];
}
$scope.SelectedVessels = [];
init();
$scope.RefreshSideBarVessels = function() {
angular.forEach($scope.SelectedVessels, function (value, key) {
alert($scope.SelectedVessels[key].VesselId);
});
}
}]);
})(adminModule);
When I use angularjs foreach loop the $scope.SelectedVessels
seems to be empty but I dont know why! 当我使用angularjs foreach循环时,
$scope.SelectedVessels
似乎是空的,但我不知道为什么!
angular.forEach($scope.SelectedVessels, function (value, key) {
alert($scope.SelectedVessels[key].Selected);
});
Does anybody know where is the problem, why I cant access the inner properties of the $scope.SelectedVessels
array and why it is empty ? 有谁知道问题出在哪里,为什么我不能访问
$scope.SelectedVessels
数组的内部属性,为什么它为空?
How you are adding values to your array ie. 您如何将值添加到数组即 $scope.SelectedVessels is important Please have a look at below example.
$ scope.SelectedVessels很重要请看下面的示例。
var values = {name: 'Raja', gender: 'male'};
var log = [];
angular.forEach(values, function(value, key) {
this.push(key + ': ' + value);
}, log);
expect(log).toEqual(['name: Raja', 'gender: male']);
First off , its ng-model not ng_model (- vs _) but that could be typo. 首先,它的ng-model不是ng_model(-vs _),但这可能是拼写错误。 Second, try this code
二,试试这段代码
$scope.onChange = function (index, value) {
$scope.SelectedVessels[index] = value;
}
@Html.CheckBoxFor(item => selectedVesselViewModel.Selected,
SelectedVessels[i] = selectedVesselViewModel.Selected
new {id = "SelectedVesselViewModels_"+i+"__Selected",
onchange ="document.getElementById('filterVesselsForm_"+i+"').submit()",
ng-model = "SelectedVessels[" + i + "].Selected",
on-change="onChange(i,selectedVesselViewModel.Selected)
})
Here is the solution to this problem: I had to use ng-init
to each checkbox to instantiate the ng-model. 这是解决此问题的方法:我必须对每个复选框使用
ng-init
来实例化ng-model。
@Html.CheckBoxFor(item => selectedVesselViewModel.Selected,
new {id = "SelectedVesselViewModels_"+i+"__Selected",
onchange ="document.getElementById('filterVesselsForm_"+i+"').submit()",
ng_model = "SelectedVessels[" + i + "].Selected",
ng_init = "SelectedVessels[" + i + "].Selected="+ selectedVesselViewModel.Selected.ToString().ToLower()
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.