2017-08-15 56 views
1

我試圖在MVC4中使用Jsonresult和Angularjs來獲取數據。ng-click不能在ng-bind中使用ng-bind-html

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> 

我的問題是:

Ng點擊這是通過JSON結果<button type='button' class='btn btn-warning btn-sm' ng-click='getQSetId(qset.qsTitleID)'></button>不起作用。但是當我用簡單的函數改變ng-click到onclick的工作。你知道爲什麼和解決方案嗎?

回答

1

ng-bind-html涉及純DOM,而非Angular指令,如ng-click。 Angular不知道要包含ngClick來消化週期,因此可以收聽事件。您需要登錄$compile。或使用angular-bind-html-compile這將在一個地方做兩件事

+0

謝謝你的回答:) angular-bind-html-compile解決了我的問題 –