Javascript 在指令中使用ng模型和ng重复
所以我似乎不太明白这一点。基本上,我正在构建一个包含选项的指令,我想在指令中定义这些选项,但在控制器中定义默认选项。它似乎渲染良好,但未选择默认选项。有什么提示吗?这是你的电话号码Javascript 在指令中使用ng模型和ng重复,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,所以我似乎不太明白这一点。基本上,我正在构建一个包含选项的指令,我想在指令中定义这些选项,但在控制器中定义默认选项。它似乎渲染良好,但未选择默认选项。有什么提示吗?这是你的电话号码 angular.module('app',[]) .controller('Ctrl',函数($scope){ $scope.defaultSearchRange=3; }) .directive('dateRange',function(){ 返回{ 限制:“A”, 范围:{ 搜索范围:'=' }, 替换:正确,
angular.module('app',[])
.controller('Ctrl',函数($scope){
$scope.defaultSearchRange=3;
})
.directive('dateRange',function(){
返回{
限制:“A”,
范围:{
搜索范围:'='
},
替换:正确,
模板:“{option.name}}”,
控制器:功能($scope){
$scope.options=[
{名称:'',值:0},
{name:'Today',值:1},
{name:'昨天',值:2},
{name:'Last 7 Days',值:3},
{name:'Last 30 Days',值:4},
{name:'Month-to-Date',值:5},
{name:'Year-to-Date',值:6}
]
}
}
})
您无法设置默认值,因为默认情况下,ng repeat
不会考虑ng model
这是有效的
我建议使用ng选项
而不是ng重复
。track by
变体将允许您设置所选值。但它必须采用相同的“对象格式”才能工作
以下是修改后的代码:
angular.module('app', [])
.controller('Ctrl', function ($scope) {
$scope.defaultSearchRange = 3;
})
.directive('dateRange', function () {
return {
restrict: 'A',
scope: {
searchRange: '='
},
replace: true,
template: '<div><select ng-model="selected" ng-options="o.name for o in options track by o.value"></select></div>',
link: function (scope) {
scope.selected = { value: scope.searchRange };
scope.$watch('selected', function(selected) {
scope.searchRange = selected.value;
});
scope.options = [
{ name: '', value: 0 },
{ name: 'Today', value: 1 },
{ name: 'Yesterday', value: 2 },
{ name: 'Last 7 Days', value: 3 },
{ name: 'Last 30 Days', value: 4 },
{ name: 'Month to Date',value: 5 },
{ name: 'Year to Date', value: 6 }
];
}
}
})
angular.module('app',[])
.controller('Ctrl',函数($scope){
$scope.defaultSearchRange=3;
})
.directive('dateRange',function(){
返回{
限制:“A”,
范围:{
搜索范围:'='
},
替换:正确,
模板:“”,
链接:功能(范围){
scope.selected={value:scope.searchRange};
范围.$watch('选定'),功能(选定){
scope.searchRange=selected.value;
});
scope.options=[
{名称:'',值:0},
{name:'Today',值:1},
{name:'昨天',值:2},
{name:'Last 7 Days',值:3},
{name:'Last 30 Days',值:4},
{name:'Month-to-Date',值:5},
{name:'Year-to-Date',值:6}
];
}
}
})
注意:上面的代码映射到一个新的指令作用域属性
selected
。如果控制器希望传递一个对象而不是一个数字值,则不需要这样做。由于值已映射入,我们必须$watch
,然后将实际选择的值映射回。您无法设置默认值,因为默认情况下ng repeat
将不考虑ng model
这是有效的
我建议使用ng选项
而不是ng重复
。track by
变体将允许您设置所选值。但它必须采用相同的“对象格式”才能工作
以下是修改后的代码:
angular.module('app', [])
.controller('Ctrl', function ($scope) {
$scope.defaultSearchRange = 3;
})
.directive('dateRange', function () {
return {
restrict: 'A',
scope: {
searchRange: '='
},
replace: true,
template: '<div><select ng-model="selected" ng-options="o.name for o in options track by o.value"></select></div>',
link: function (scope) {
scope.selected = { value: scope.searchRange };
scope.$watch('selected', function(selected) {
scope.searchRange = selected.value;
});
scope.options = [
{ name: '', value: 0 },
{ name: 'Today', value: 1 },
{ name: 'Yesterday', value: 2 },
{ name: 'Last 7 Days', value: 3 },
{ name: 'Last 30 Days', value: 4 },
{ name: 'Month to Date',value: 5 },
{ name: 'Year to Date', value: 6 }
];
}
}
})
angular.module('app',[])
.controller('Ctrl',函数($scope){
$scope.defaultSearchRange=3;
})
.directive('dateRange',function(){
返回{
限制:“A”,
范围:{
搜索范围:'='
},
替换:正确,
模板:“”,
链接:功能(范围){
scope.selected={value:scope.searchRange};
范围.$watch('选定'),功能(选定){
scope.searchRange=selected.value;
});
scope.options=[
{名称:'',值:0},
{name:'Today',值:1},
{name:'昨天',值:2},
{name:'Last 7 Days',值:3},
{name:'Last 30 Days',值:4},
{name:'Month-to-Date',值:5},
{name:'Year-to-Date',值:6}
];
}
}
})
注意:上面的代码映射到一个新的指令作用域属性
selected
。如果控制器希望传递一个对象而不是一个数字值,则不需要这样做。由于值已映射入,我们必须$watch
,然后将实际选择的值映射回。您无法设置默认值,因为默认情况下ng repeat
将不考虑ng model
这是有效的
我建议使用ng选项
而不是ng重复
。track by
变体将允许您设置所选值。但它必须采用相同的“对象格式”才能工作
以下是修改后的代码:
angular.module('app', [])
.controller('Ctrl', function ($scope) {
$scope.defaultSearchRange = 3;
})
.directive('dateRange', function () {
return {
restrict: 'A',
scope: {
searchRange: '='
},
replace: true,
template: '<div><select ng-model="selected" ng-options="o.name for o in options track by o.value"></select></div>',
link: function (scope) {
scope.selected = { value: scope.searchRange };
scope.$watch('selected', function(selected) {
scope.searchRange = selected.value;
});
scope.options = [
{ name: '', value: 0 },
{ name: 'Today', value: 1 },
{ name: 'Yesterday', value: 2 },
{ name: 'Last 7 Days', value: 3 },
{ name: 'Last 30 Days', value: 4 },
{ name: 'Month to Date',value: 5 },
{ name: 'Year to Date', value: 6 }
];
}
}
})
angular.module('app',[])
.controller('Ctrl',函数($scope){
$scope.defaultSearchRange=3;
})
.directive('dateRange',function(){
返回{
限制:“A”,
范围:{
搜索范围:'='
},
替换:正确,
模板:“”,
链接:功能(范围){
scope.selected={value:scope.searchRange};
范围.$watch('选定'),功能(选定){
scope.searchRange=selected.value;
});
scope.options=[
{名称:'',值:0},
{name:'Today',值:1},
{name:'昨天',值:2},
{name:'Last 7 Days',值:3},
{name:'Last 30 Days',值:4},
{name:'Month-to-Date',值:5},
{name:'Year-to-Date',值:6}
];
}
}
})
注意:上面的代码映射到一个新的指令作用域属性
selected
。如果控制器希望传递一个对象而不是一个数字值,则不需要这样做。由于值已映射入,我们必须$watch
,然后将实际选择的值映射回。您无法设置默认值,因为默认情况下ng repeat
将