ページに JavaScript 配列にバインドされた KendoUI グリッドがあります。グリッド内の行をクリックすると、行変更イベントが発生し、その行を表すオブジェクトを取得します。私は今、AngularJS のテンプレートを使用して、このようにそのモデルにバインドしたいと考えています...
<div ng-app ng-model="currentRecord">
{{FirstName}} - {{Surname}}
</div>
FirstName と Surname はどちらも、行のオブジェクトのプロパティです。だから私が求めているのは、AngularJsコントローラーの外部からモデルを設定する方法だと思いますか?
私は Angular を取り上げたばかりなので、私が尋ねていることは悪い考えかもしれません。その場合は、その理由を教えてください。
アップデート
ピーターの答えに従って、「Angular Kendo」でこれを達成しようとしました
MVC ヘルパーを使用してグリッドをレンダリングしています。コードは次のようになります。
<div ng-app="ngUsers">
<div ng-controller="UserCtrl">
<div class="span6">
@(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.Id).Hidden(true);
columns.Bound(p => p.FirstName);
columns.Bound(p => p.LastName);
})
.Groupable()
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.Selectable()
.Events(e => e.Change("rowSelected"))
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("AjaxList", "User"))
)
)
</div>
<div id="results">
{{FirstName}}
</div>
</div>
</div>
私が欲しいのは、行が選択されたときに、そのオブジェクトの firstname プロパティが結果の div に表示されることです。
私のAngularコントローラーは次のようになります....
var ngUsers = angular.module('ngUsers', ["kendo.directives"]);
ngUsers.controller("UserCtrl", function ($scope) {
$scope.rowSelected = function (kendoEvent) {
var grid = kendoEvent.sender;
var selectedRow = grid.select();
$scope.user = selectedRow;
};
});
これにより、グリッド変更イベントをバインドする行でrowSelectedが定義されていません。これは、グリッドが角度コントローラーでrowSelectedイベントを認識できないためだと思いますか?