Ng-click不能与ng-repeat中的ng-bind-html一起使用

时间:2017-08-15 08:07:48

标签: angularjs asp.net-mvc-4

我试图在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时,使用简单的功能就可以了。你知道为什么和解决方案吗?

1 个答案:

答案 0 :(得分:1)

ng-bind-html处理纯DOM而非ng-click等Angular指令。 Angular不知道要将ngClick包含在消化周期中,因此要监听事件。你需要$compile第一名。或者使用可在一个地方完成这两件事的angular-bind-html-compile