2017-02-28 17 views
0

我正在使用asp.net MVC 5並使用Html.CheckBoxFor製作複選框。如何更新Html.CheckBoxFor使用AngularJS ng模型?

<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的活動字段。

如何獲得剃鬚刀的複選框來檢查?

+0

如何設置'$ scope.editFormData'的值?你想在AJAX回調後設置'active:true'(最好同時顯示'editFormData'和AJAX回調代碼)? –

+0

@TetsuyaYamamoto我用angularjs更新了問題。 resultobject內部是一個名爲active的屬性。 – SolidSnake4444

+0

如何'response.data.ResultObject'看起來像(我認爲它在POST後返回JSON對象)?嘗試結果數據序列化來顯示'ng-model'中的'active'屬性值:'$ scope.editFormData = @ Html.Raw(JsonConvert.SerializeObject(response.data.ResultObject));'或'JSON.stringify'控制器被放置在單獨的JS文件中。 –

回答

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