AngularJS:来自php的ng-repeat输出数组(带键)?

时间:2013-11-30 17:03:43

标签: javascript php arrays angularjs

我有一个rootScope变量,其中包含产品类别,每个类别可能有也可能没有子项。这就是我分配rootScope

的方式
$rootScope.categoryList = $http.get('category').then((result) -> result.data) 

这将要求(到Laravel路线)获取类别数据数组,数据的设计看起来像这样:

$data = array(
        {category: Category, children: array('child1, child2, child3')},
        {category: Category2, children: null},
        {category: Category3, children: array('anotherchild1, anotherchild2')}
    );

我生成数组的方式是:

public static function GetCategoryListings($ignore=false) {
    $results = DB::table('category')->where('parent','-')->get();
    $data = array();

    if(!is_null($results)) {
        $i = 0;
        foreach($results as $result) {
            $data[$i]['category'] = $result;
            $child_result = DB::table('category')->where('parent',$result)->get();

            if(!is_null($child_result)) {
                foreach($child_result as $child) {
                    $data[$i]['children'][] = $child;
                }
            }
            else
                $data[$i]['children'] = null;

            $i++;
        }
    }
    return $data;
}

现在,我想将输出打印到Angular的视图中,我该怎么做?我做到了 像这样的东西:

<li ng-repeat="cat in categoryList">
                {{cat.category}}
            </li>

但它没有用,加上我无法输出孩子。有没有办法解决这个问题?

修改

通过在我的视图中更改为类似内容解决了我的问题:

<ul>
            <li ng-repeat="cat in categoryList">
                {{cat.category}}
                <ul ng-if="cat.children != null">
                    <li ng-repeat="ch in cat.children">{{ch}}</li>
                </ul>
            </li>
        </ul>

1 个答案:

答案 0 :(得分:0)

这里可能会有很多不同的问题,但很可能就是这样。

Angular 1.2 no longer automatically unwraps promises in the templates。您必须将语法更改为以下内容:

$http.get('category').then((result) -> $rootScope.categoryList = result.data)

请注意,如果您依赖categoryList作为承诺,这可能会破坏您应用中的其他内容。