Angularjs 自定义指令:下拉选择值不绑定

Angularjs 自定义指令:下拉选择值不绑定,angularjs,Angularjs,我正在尝试为AngularJS 1.4.4中的下拉控件创建自定义指令。我可以处理所选事件,但无法获取下拉列表中所选内容的绑定 我想用下面的方式从Html标记调用它 <my-dropdown-list source="myList" destination="mySelection" /> 这里有angular js自定义指令 (function() { var directive = function($compile) { return { res

我正在尝试为AngularJS 1.4.4中的下拉控件创建自定义指令。我可以处理所选事件,但无法获取下拉列表中所选内容的绑定

我想用下面的方式从Html标记调用它

<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,但遇到了相同的问题。正如上面的一条评论所建议的,我认为是父范围无法看到所选绑定。