2016-07-31 46 views
2

我有角指令看起來像這樣

app.directive('paymentsTable', ['$watch', function($watch) { 
    return { 
     replace: true, 
     restrict: 'EACM', 
     templateUrl: '../views/paymentTable.html', 
     link: function(elem, attr, scope) { 

     console.log(elem.$parent.payments); // array 

     scope.$watch(function(elem) { return elem.$parent.payments }, function(value, oldValue) { 

     }); 
    } 
    }; 
}]); 

它給了我

angular.js:13920Error: [$injector:unpr]

當我重寫這樣

app.directive('paymentsTable', [ function() { 

它給第一線我另一個錯誤

angular.js:13920TypeError: o.$watch is not a function

我也使用uglify。所以,我的問題是:這裏發生了什麼?

回答

1

$watch函數是scope的一部分,它是在link方法中交給你的,因此不需要注入它。你得到第二個錯誤的原因是link參數的順序。試試像這樣:

app.directive('paymentsTable', function() { // no need for injection 
    return { 
     replace: true, 
     restrict: 'EACM', 
     templateUrl: '../views/paymentTable.html', 
     link: function(scope, element, attrs) { // The correct arguments order 

     console.log(elem.$parent.payments); 

     scope.$watch(function(elem) { return elem.$parent.payments }, function(value, oldValue) { 

     }); 
    } 
    }; 
}); 
+0

非常感謝。 –

+0

祝你的程序好運 – AranS