Angularjs 自定义指令:下拉选择值不绑定
我正在尝试为AngularJS 1.4.4中的下拉控件创建自定义指令。我可以处理所选事件,但无法获取下拉列表中所选内容的绑定 我想用下面的方式从Html标记调用它Angularjs 自定义指令:下拉选择值不绑定,angularjs,Angularjs,我正在尝试为AngularJS 1.4.4中的下拉控件创建自定义指令。我可以处理所选事件,但无法获取下拉列表中所选内容的绑定 我想用下面的方式从Html标记调用它 <my-dropdown-list source="myList" destination="mySelection" /> 这里有angular js自定义指令 (function() { var directive = function($compile) { return { res
<my-dropdown-list source="myList" destination="mySelection" />
这里有angular js自定义指令
(function() {
var directive = function($compile) {
return {
restrict: 'E',
scope: {
model: '=source',
selectedValues: '=destination'
},
controller: function($scope) {
$scope.onSelChange = function() {
alert('called');
console.log($scope.selectedItem.Code, $scope.selectedItem.Name);
};
// $scope.selectedItem is always undefined here.
},
link: function ($scope, $elem) {
var rowHtml =
'<select ng-options="item as item.Name for item in model" ng-model="selectedItem" ng-change="onSelChange()"></select>';
$elem.html(rowHtml);
$compile($elem.contents())($scope.$new());
}
};
};
my.directive('myDropdownList', directive);
})();
(函数(){
var指令=函数($compile){
返回{
限制:'E',
范围:{
模型:'=源',
selectedValues:“=目的地”
},
控制器:功能($scope){
$scope.onSelChange=函数(){
警报(“被呼叫”);
log($scope.selectedItem.Code、$scope.selectedItem.Name);
};
//$scope.selectedItem在此始终未定义。
},
链接:函数($scope$elem){
var rowHtml=
'';
$elem.html(rowHtml);
$compile($elem.contents())($scope.$new());
}
};
};
my.指令(“myDropdownList”,指令);
})();
我是Angular的新手,所以这可能是我在这里遗漏的一些小东西,但我似乎无法获得“selectedItem”的值。我在AgularJS文档中发现了这一点 请注意,不使用ngOptions的select指令的值为 总是一根线。当模型需要绑定到非字符串时 值,则必须使用指令(请参见 或使用NgoOptions指定选项集。这是 因为option元素只能在 现在 链接: 您应该使用ngRepeat生成如下帖子所示的列表:
我在AgularJS文档中发现了这一点 请注意,不使用ngOptions的select指令的值为 总是一根线。当模型需要绑定到非字符串时 值,则必须使用指令(请参见 或使用NgoOptions指定选项集。这是 因为option元素只能在 现在 链接: 您应该使用ngRepeat生成如下帖子所示的列表:
这是经典的“点表示法”问题。您需要在对象上具有绑定属性-
myModel.mySelection
才能将其与指令绑定。问题是您为添加到指令模板中的html创建了一个新范围。但在控制器中,您可以访问它的父作用域,而父作用域看不到它的子作用域。这是典型的“点表示法”问题。您需要在对象上具有绑定属性-myModel.mySelection
才能将其与指令绑定。问题是您为添加到指令模板中的html创建了一个新范围。但在控制器中,您可以访问其父作用域,而父作用域无法看到其子作用域。我首先尝试使用ng repeat,但遇到了相同的问题。我认为这是因为父作用域无法看到所选绑定,正如上面的一条评论所建议的那样。我尝试先使用ng repeat,但遇到了相同的问题。正如上面的一条评论所建议的,我认为是父范围无法看到所选绑定。