我相信问题是您的指令中的selected
对象。它抛出的异常导致了这一点。
在您绑定的html中selected.name
这意味着您的指令中的selected
将与您的控制器中的selected
的name
属性绑定。
但是,当您选择一个项目时,试图在您的指令中设置selected
对象的name
属性,显然它不具有它的字符串。
因此,解决办法:
$scope.selectedCountry = function (item){
console.log(item);
$scope.selected = item.name
}
在您的指令只需设置名称selected
。
http://jsfiddle.net/abarfhr8/1/
编辑:
不过,我想稍微重组它。首先在您的控制器中初始化您选择的对象 ,然后$scope.selected = $scope.items[0]
。然后将ng-model
更改为ng-model="selected"
,以便返回整个选定的对象。
终于在你的指令做:
$scope.selectedCountry = function (item){
console.log(item);
$scope.selected = item
}
现在,当你运行和选择代码和名称输入正确填写的项目。
见第二小提琴:http://jsfiddle.net/abarfhr8/2/
希望有所帮助。
谢谢你的努力。你救了我的一天。 –
=和&和@在这里有什么用处 –
没问题,'@,=,=?,&'告诉角色如何绑定指令和外部世界。你可以有两种方式绑定,可选的两种方式绑定,一种方式是属性是一种访问器方法来获取值和更多。这应该有希望解释它。 https://docs.angularjs.org/api/ng/service/$compile#-scope-你也可以自己拥有'='。它会希望html属性与scope属性具有相同的名称。 – ste2425