Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Angularjs 使用ng if构建角度指令_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 使用ng if构建角度指令

Angularjs 使用ng if构建角度指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我想为我的表单使用一个角度指令,根据属性,它应该使用输入标记或选择标记。我尝试使用ng if来执行此操作: ->如果设置了“选择选项”属性,请使用选择标记 通过在指令的模板中使用ng if,到模型的数据绑定在某种程度上变成了单向的。(我认为ng if这样做的整个方法是错误的?) 以下是一个例子: <!DOCTYPE html> <html> <head> </head> <body ng-app="myApp" ng-controller="

我想为我的表单使用一个角度指令,根据属性,它应该使用输入标记或选择标记。我尝试使用ng if来执行此操作:

->如果设置了“选择选项”属性,请使用选择标记

通过在指令的模板中使用ng if,到模型的数据绑定在某种程度上变成了单向的。(我认为ng if这样做的整个方法是错误的?)

以下是一个例子:

<!DOCTYPE html>
<html>
<head>
</head>
<body ng-app="myApp" ng-controller="AppController">
Parent: <input type="number" ng-model="data.a"/><br>
Data.a: {{data.a}}<br/>
Data.b: {{data.b}}<br/>
InputDirective: <my-directive ng-model="data.a"></my-directive>
SelectDirective: <my-directive ng-model="data.b" select-options="{'aa':'Two As','bb':'Two Bs'}"></my-directive>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.3/angular.min.js"></script>
<script>
    var app = angular.module("myApp",[]);

    app.directive('myDirective', function()
    {
        return {
            restrict: 'E',
            scope: {
                value: '=ngModel',
                selectOptions: '='
            },
            template: '<input ng-if="!selectOptions" type="number" ng-model="value"/><select ng-if="selectOptions" ng-model="value" ng-options="k as v for (k,v) in selectOptions"></select>'
        };
    });

    app.controller("AppController", function( $scope )
    {
        $scope.data = {
            a: 54,
            b: 'aa'
        };
    });
</script>
</body>
</html>

家长:
Data.a:{{Data.a}}
Data.b:{{Data.b}}
输入指令: 选择指令: var-app=angular.module(“myApp”,[]); app.directive('myDirective',function() { 返回{ 限制:'E', 范围:{ 值:'=ngModel', 选择选项:'=' }, 模板:“” }; }); app.controller(“AppController”,函数($scope) { $scope.data={ a:54, b:‘aa’ }; });
我找到了一个解决方案:在模板更改中 ng model=“value” 到 ng model=“$parent.value”

ng if正在创建子作用域,并且正在创建此类问题


我仍然不知道ng if是否是正确的方法。

对此不确定,但ng模型是特殊属性,请尝试使用其他属性传递值并将其分配给ng模型。我尝试过,但它没有改变任何东西。这对我帮助很大。非常感谢。