Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS中的条件视图_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS中的条件视图

Javascript AngularJS中的条件视图,javascript,angularjs,Javascript,Angularjs,我有一个问题涉及AngularJS中的条件偏a型视图。下面的例子不是很理想。它还返回一个错误,该错误属于$compile(element.contents())(scope)行,该行表示我不能将scope用作函数,否则它将无法正确呈现所有内容。用例如下所示: 我正在请求通过$http返回一个对象数组的路由 我正在ng repeat返回对象数组 对于每个对象(我们称之为obj),都会给出一个obj.view\u edit值 如果obj.type等于plugin,则插入指令 这看起来像: <

我有一个问题涉及AngularJS中的条件偏a型视图。下面的例子不是很理想。它还返回一个错误,该错误属于
$compile(element.contents())(scope)
行,该行表示我不能将
scope
用作函数,否则它将无法正确呈现所有内容。用例如下所示:

  • 我正在请求通过
    $http
    返回一个对象数组的路由

  • 我正在
    ng repeat
    返回对象数组

  • 对于每个对象(我们称之为
    obj
    ),都会给出一个
    obj.view\u edit

  • 如果
    obj.type
    等于
    plugin
    ,则插入
    指令

  • 这看起来像:

     <plugin view="content.view_edit"></plugin>
    

    您有更好的解决方案吗?

    在处理更复杂的问题之前,您不需要在链接函数中手动操作DOM来隐藏/显示或
    $compile
    s。只要使用本机
    ng if
    指令即可

    <div ng-repeat="obj in objects">
        <div ng-if="isPlugin(obj)">
            <plugin view="obj.view_edit"></plugin>
        </div>
        <div ng-if="!isPlugin(obj)">
            This is not a plugin.
        </div>
    </div>
    

    非常感谢。我使用您的方法解决了这个问题,使用了
    ng switch=“content.type”
    ng switch when=“plugin”
    ,用于每种类型。
    <div ng-repeat="obj in objects">
        <div ng-if="isPlugin(obj)">
            <plugin view="obj.view_edit"></plugin>
        </div>
        <div ng-if="!isPlugin(obj)">
            This is not a plugin.
        </div>
    </div>
    
    scope.isPlugin = function (obj) {
        return obj.type === 'plugin';
    }