我正在学习如何创建自定义角度指令,其中我想使用一些双向数据绑定;然而没有运气。角度指令 - 双向数据绑定问题
想法非常简单:我们有一个人员列表,当我选择其中的任何人时,我想在我的指示中显示所选人员的姓名(明细)。
之前,我贴了很多代码,这里是我的榜样plunker:
https://plnkr.co/edit/xQJAWcYcscOaaNs8VlAI?p=preview
这里是我做了什么:
创建主控制器:
(function() {
"use strict";
var controllerId = 'personController';
angular.module("app").controller(controllerId, ["$timeout", personController]);
function personController($timeout) {
var vm = this;
vm.name = "Janko";
vm.people = returnPeople();
vm.selectedPerson = {};
vm.selectPerson = function (person) {
//function to add a new Person
vm.selectedPerson = person;
console.log(vm.selectedPerson.name);
};
}
function returnPeople() {
return [
{
name: "Janko",
surname: "Hrasko",
age: 24,
gender: "M"
},
{
name: "Jozef",
surname: "Mrkvicka",
age: 26,
gender: "M"
},
{
name: "Janka",
surname: "Kratka",
age: 21,
gender: "F"
}
];
};
})();
创建指令:
(function() {
"use strict";
var app = angular.module("app");
app.directive('personDetail', personDetail);
function personDetail() {
return {
scope: {
person: "=person"
},
restrict: 'E',
templateUrl: '/js/person/templates/personDetail.html'
}
};
})();
**创建人详细控制器:**
(function() {
"use strict";
var controllerId = 'personDetail';
angular.module("app").controller(controllerId, ["$scope", personController]);
function personController($scope) {
var vm = this;
vm.person = $scope.person;
}
})();
最后 - 人Detail.html
<div ng-controller="personDetail as vm">
<h3>Selected Name:</h3>
<h3>{{vm.person.name}}</h3>
</div>
不幸的是,数据绑定不工作,即使我可以看到项目已被选中。我在这里做错了什么?
编辑:
你的答案全部从我personDetail.html
删除的NG-控制器,但是我想保持它(目前只包含一个微小的结合,但我想添加更多的功能,还有如按钮点击等)。
是否可以保持控制器?
'BindToController'做到了! –