我试图在MVC4中使用Jsonresult和Angularjs来获取数据。
控制器中的Jsonresult功能:
public JsonResult GetQuestionSets() {
//...
var selectedData = titles.Select(y => new
{
//...
qsAction = y.qtConfirm.Equals(false) ? "<button type='button' class='btn btn-warning btn-sm' ng-click='getQSetId(qset.qsTitleID)'>Edit</button>" : y.Questions.All(z => z.qStatus == null) ? "<button type='button' class='btn btn-success btn-sm disabled'>Waiting</button>" : y.Questions.All(z => z.qStatus == true) ? "<button class='btn btn-success btn-sm'>Preview</button>" : "<button type='button' class='btn btn-warning btn-sm'>Edit</button>",
});
return Json(selectedData, JsonRequestBehavior.AllowGet);
}
AngularJS获得结果:
$http.get('/Tutor/GetQuestionSets').then(function (response) {
$scope.questionSets = response.data;
});
$scope.trustedHtml = $sce.trustAsHtml;// Convert string to html
查看:
<table class="table table-striped">
<thead>
//...
</thead>
<tbody>
<tr ng-repeat="qset in questionSets">
//...
<td align="center" ng-bind-html="trustedHtml(qset.qsAction)"></td>
</tr>
</tbody>
</table>
我的问题是:
通过json结果<button type='button' class='btn btn-warning btn-sm' ng-click='getQSetId(qset.qsTitleID)'></button>
无法正常工作的Ng-click。但是,当我将ng-click更改为onclick时,使用简单的功能就可以了。你知道为什么和解决方案吗?
答案 0 :(得分:1)
ng-bind-html
处理纯DOM而非ng-click
等Angular指令。 Angular不知道要将ngClick
包含在消化周期中,因此要监听事件。你需要$compile第一名。或者使用可在一个地方完成这两件事的angular-bind-html-compile