如何使用AngularJS ng-model更新Html.CheckBoxFor?

时间:2017-02-28 16:34:45

标签: javascript c# angularjs asp.net-mvc razor

我正在使用asp.net MVC 5并使用Html.CheckBoxFor创建一个复选框。

<div class="col-md-6">
    @Html.CheckBoxFor(m => m.active, new { 
        @class = "form-control populate", @id = 'EditActive',
        @ng_model = "editFormData.active"
    })
</div>

当我在ajax调用后设置angularjs editFormData时,当我将其作为{{editFormData}}输出到屏幕时,该值是正确的,但该复选框未显示为已选中。

datatableApp.controller('EditFormController', ['$scope', '$http', function($scope, $http) {
    $scope.getEditStreet = function(streetID) {
        $http.post('@Url.Action(Model.GetFormControllerFunctionName, Model.GetFormControllerName)', "{ @Model.JavascriptEditPropertyName : " + streetID + "}").then(function(response) {
                alert("success");
                $scope.editFormData = response.data.ResultObject;
            },
            function(response) {
                alert("fail" + response.statusText);
            });
    };
}]);

resultobject包含一个正确显示为true或false的活动字段。

如何获取要检查的复选框的剃刀版本?

1 个答案:

答案 0 :(得分:0)

我明白了。显然,在某些情况下修改某些值时,您需要使用$ scope.apply()。不确定所有这些情况是什么,但我添加了它,现在它完美地工作。

datatableApp.controller('EditFormController', ['$scope', '$http', function($scope, $http) {
    $scope.getEditStreet = function(streetID) {
        $http.post('@Url.Action(Model.GetFormControllerFunctionName, Model.GetFormControllerName)', "{ @Model.JavascriptEditPropertyName : " + streetID + "}").then(function(response) {
                alert("success");
                $scope.editFormData = response.data.ResultObject;
                $scope.$apply();
            },
            function(response) {
                alert("fail" + response.statusText);
            });
    };
}]);