javascript - angularjs什么时候渲染model变量?
大家讲道理
大家讲道理 2017-04-10 13:11:45
0
3
572

我有这样一个需求:ChartController会生成变量,将数值赋给p的id,然后GraphController中用到p的id变量,但是GraphController中的方法需要p的id已被渲染才行。

<p ng-controller="ChartController">
  <p ng-repeat="id in chart.id">
    <p id="{{ id.value }}" ng-controller="GraphController"><p>
  <p>
</p>

如果GraphController的xx方法被调用的时候,我查看前端的代码,p的id名称还是

<p id="{{ id.value }}"...

去除ng-controller="GraphController"后,发现p的id渲染正确

<p id="abc123"...

很奇怪!

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all(3)
左手右手慢动作

我不建议将angular的模板语言直接放在id或者class这些属性里,可以用ng-class,ng-href,ng-src这些属性代替。

angular里的controller不是类,不能用类似楼主那样的方法直接从一个controller里新建多个类并传值给它们。

楼主需要的是directive

<p ng-controller="ChartController">
  <p ng-repeat="id in chart.id">
    <graph graph-id="id.value"></graph>
  <p>
</p>
app.directive("graph",function(){
    return {
        template: '<p>{{id}}</p>',
        scope:{
            //注意这里
            //如果是'@graphId'的话,则返回的是字符串"id.value"
            //graphId对应的html属性为"graph-id"
            id:'=graphId'
        },
        restrict:'E',
        controller:function($scope){
            console.log($scope.id);
            //abc123

            //将GraphController的代码放在这里
        }
    }
})

http://plnkr.co/edit/M1gtlySErXvSOgQayxF6?p=preview

关于directive,看这里

迷茫

http://plnkr.co/edit/5JSoltju6h9tmRTmS2SE?p=preview
没看出来啥问题。。你是如何调用id的。。

阿神

ng-controller会开个新的scope

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template