javascript
  • c#
  • angularjs
  • asp.net-mvc
  • razor
  • 2017-02-28 1 views 0 likes 
    0

    Ich benutze asp.net MVC 5 und mache ein Kontrollkästchen mit Html.CheckBoxFor.Wie aktualisiert man Html.CheckBox für AngularJS ng-Modell?

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

    Als ich AngularJS editFormData nach einem Ajax-Aufruf gesetzt, der Wert korrekt ist, wenn ich es auf den Bildschirm ausgegeben als {{editFormData}} aber das Kontrollkästchen nicht als nicht zeigt überprüft wird.

    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); 
          }); 
        }; 
    }]); 
    

    Die resultobject enthält einen aktiven Bereich, die korrekt als wahr oder falsch ist, zeigt nach oben.

    Wie kann ich die Rasierer Version des Kontrollkästchens überprüfen?

    +0

    Wie setzen Sie '$ scope.editFormData' Wert? Wollen Sie 'active: true' nach dem AJAX-Callback setzen (besser sowohl' editFormData' als auch AJAX Callback-Code)? –

    +0

    @TetsuyaYamamoto Ich habe die Frage mit dem angularjs aktualisiert. Innerhalb des Ergebnisobjekts befindet sich eine Eigenschaft namens active. – SolidSnake4444

    +0

    Wie 'response.data.ResultObject' aussieht (ich denke, es gibt JSON-Objekt nach POST zurück)? Probieren Sie die Serialisierung der Ergebnisdaten aus, um den 'aktiven' Eigenschaftswert in' ng-Modell' aufzudecken: '$ scope.editFormData = @ Html.Raw (JsonConvert.SerializeObject (response.data.ResultObject));' oder 'JSON.stringify', wenn eckig Controller wird in einer separaten JS-Datei platziert. –

    Antwort

    0

    Ich fand es heraus. Anscheinend, wenn Sie bestimmte Werte in einigen Fällen ändern, müssen Sie $ scope.apply() haben. Nicht sicher, was all diese Fälle sind, aber ich habe es hinzugefügt und es funktioniert jetzt perfekt.

    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); 
          }); 
        }; 
    }]); 
    
    Verwandte Themen