Angularjs 使用ng if构建角度指令
我想为我的表单使用一个角度指令,根据属性,它应该使用输入标记或选择标记。我尝试使用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这样做的整个方法是错误的?) 以下是一个例子:
<!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模型。我尝试过,但它没有改变任何东西。这对我帮助很大。非常感谢。