2015-01-24 14 views
37

Bir ui-grid hücre şablonundan $scope'a nasıl erişilir? http://plnkr.co/edit/WYXeQShHWKDYDs4MIZnP?p=previewAngularJS: UI-grid hücre şablonundan kapsama nasıl erişilir?

ben hücre içeriğini "merhaba dünya" göstermek için beklenir, ama onlar sadece "Merhaba" gösterir:

app.controller('MainCtrl', ['$scope', function ($scope) { 

    // i want to reference this from a cell template. 
    $scope.world = function() { return 'world'; }; 

    $scope.gridOptions = { 
    data: [ 
     { id: "item1" }, 
     { id: "item2" } 
    ], 
    columnDefs: [ 
    { 
     field: 'id', 

     // world() is never called and is not displayed. 
     cellTemplate: '<div>{{ "hello " + world() }}</div>' 
    }] 
    }; 
}]); 

yapıldığını burada bakınız: İşte benim denetleyicisi kod.

cevap

64

http://ui-grid.info/docs/#/tutorial/305_appScope'a göre, ızgaranın kendi kapsama alanı vardır, bu nedenle uygulama kapsamınıza erişmek için grid.appScope'u kullanmanız gerekir. Ben 'col.grid.appScope kullanmak zorunda filterHeaderTemplate dan

cellTemplate: '<div>{{ "hello " + grid.appScope.world() }}</div>' 
+2

: Çözüm için hücre şablonunu değiştirmektir. .myFunction() ' – user2171669

+0

Tam olarak nedir? Yukarıdaki örneğe göre? –

+1

Emin değilim ama ile yapılan yorum, "Controller as" sözdizimini kullanan kişiler için anlamlı görünüyor. Bu yüzden, eğer kontrol cihazınızı bir takma ad olarak hazır bulundurduysanız (yaygın olarak: vm olarak kontrolör), o zaman takma adınızı zincirinize eklemeniz gerekir, örneğin: grid.appScope.vm.myMethod(). HTH – FOR

İlgili konular