我有一个angularjs'child'指令,因此:
someAlertMessage: function(){
return {
restrict: 'E',
template: '<span ng-show="showAlert">whatever</span>',
require: '^someInput',
controller: function($scope, AcmeService){
$scope.setShowAlert = function(aValue){
AcmeService.getThings(aValue, function(data){ // bog standard http get with callback
console.log(data) // THIS LOGS true
$scope.showAlert = true; // THIS WORKS
$scope.showAlert = data; // THIS DOESNT WORK
}
}
}
link: function(scope, e, a, c){
scope.$watch('someinputvalue', function(nv, ov){
scope.setShowAlert(nv)
}
}
}
}
使用这些指令的页面的标记:
<someInput>
<someAlertMessage></someAlertMessage>
</someInput>
对'someInput'父指令没有太大兴趣。唯一需要注意的是指令和标记中的transclude:true
:
<div>
<!-- things -->
<div ng-transclude></div>
</div>
如第一个清单所述,我有两个案例:
$scope.showAlert
变量硬编码为true具有完全所需的效果:更新范围并相应地更改DOM以显示范围true
,通过日志记录和调试)不执行任何操作。在这种情况下,如果我将$scope.showAlert
值写入屏幕,它将保持为假。 我尝试将服务的返回值硬编码到true
,而不进行http调用,这也会产生预期的效果
所以,我很难过,我该怎么办?让我知道还需要什么信息。
感谢。