指令在属性设置之前加载
Directive loads before attributes are set
我有一个指令,看起来像下面的
app.directive("responses", function ()
{
return {
templateUrl: "/templates/responses.html",
link: function(scope, element, attrs, parentCtrl)
{
var type = attrs.type;
}
}
});
这是html标记中的指令。type
属性由控制器设置。这是$http
调用
<div responses type="{{Data.Type}}"></div>
然而,当指令去检索这个属性时,它还没有被父控制器设置。因此,当指令加载时,type
最终被设置为零。我想我可以用setInterval()
来解决,但这似乎不是最好的方法。任何想法吗?
这是简化后的控制器
controllers.AppCtrl = function($scope, $routeParams, $http)
{
$scope.Data ={
Type = ""
}
$http.get("http://restfulURI/3").success(function (result)
{
$scope.Data.Type = result.Type;
}
}
尝试使用scope.$watch
:
app.directive("responses",function(){
return {
templateUrl: "/templates/responses.html",
link: function(scope, element, attrs, parentCtrl){
scope.$watch(attrs.type,function(newvalue,oldvalue){
//on attribute value changes
});
}
}
});
$watch
将在属性属性上添加一个监听事件,一旦它改变,它将触发你指令上的事件。
这是活塞演示
如果您想在属性更改时启动一些特殊操作,则需要使用监视器此外,如果您不使用隔离作用域,那么监视属性也没有多大意义,因为您可以访问控制器作用域,无论如何您都可以监视Data。类型发生变化。为了提供更好的解决方案,我们需要更多地了解最终应用程序以及您想要实现的目标。
相关文章:
- 内容安全策略:页面's设置阻止加载资源
- 如何在页面加载时设置函数的条件
- 对插件初始化后动态加载的元素进行样式设置
- 任何人都知道IE7设置或更新/补丁,它可以防止IE因为jquery错误而无法加载页面
- 为什么页面重新加载会使设置超时无效,以及如何避免
- VBScript在加载时设置值
- 如何在页面加载angular js上设置从ajax调用中选择的选项
- 如何在onclick事件执行代码时在ImageButton上设置加载gif
- Highcharts如何显示在设置数据时加载动画
- 在地图加载/页面加载时,我想将地图设置为当前地理位置,但不想在地图上显示定位图标
- href属性在页面加载后拒绝重新设置
- 无法获取表单's面板的x和y坐标,并在加载时从cookie中设置它们
- Jquery数组-设置和加载值
- 如何在使用javascript加载页面时直接设置对象参数
- 即使在 DOM 加载后也无法设置 null 的 .innerHTML
- Chrome 扩展程序会等待设置加载到事件处理程序中
- 如何设置页面之间过渡的加载图标
- 使用Select2远程加载设置默认选项
- SVG 动画在加载设置超时时不会启动
- 我如何在$script.js库中为文件加载设置http requesttheader ?