我有一个如此定义的指令:
.directive("datepicker", function () {
return {
restrict: 'E',
scope: {
date: '=',
filterfnc: '&'
},
replace: true,
controller: ["$scope", '$http', '$resource', 'services', function ($scope, $http, $resource, services) {
$scope.RunFilter = function () {
$scope.date = '9-16-2013';
$scope.filterfnc();
}
}]
我正在访问指令:
<datepicker date="MyDate" filterfnc="LoadValue()"></datepicker>
MyDate是将在函数LoadValue()中使用的Model值。我遇到的问题是即使在指令中设置了值,它也没有显示在LoadValue函数中。
$scope.MyDate= '';
$scope.LoadValue= function () {
var params = { Date: $scope.MyDate };
...
}
不确定我做错了什么。一切似乎都是正确的,我没有错误。
答案 0 :(得分:0)
不太确定,但我想您应该使用LoadValue
,不使用()
作为filterfnc
属性值,或将LoadValue
定义为
$scope.LoadValue = function() {
return function() {
var params = { date: $scope.MyDate};
//The rest of your function
};
}
答案 1 :(得分:0)
这真的很奇怪,我很乐意看到其他答案。似乎需要双向绑定一段时间来更新或其他东西。我让它像这样工作:
app.directive("datepicker", function ($timeout) {
return {
restrict: 'E',
scope: {
date: '=',
filterfnc: '&'
},
replace: true,
controller: function ($scope) {
$scope.RunFilter = function () {
$scope.date = '9-16-2013';
$timeout(function(){
$scope.filterfnc();
});
}
$scope.RunFilter();
}
}
});