각도 1.5.x의 구성 요소를 사용하기 시작했으며 양식의 선택 상자에 하나를 생성했습니다. 필드, 목록 및 레이블을 구성 요소에 추가하고 올바른 옵션으로 레이블과 선택 상자로 구성된 '부분'양식을 작성합니다. - 지금까지는 그렇게 좋았습니다.이전 응답을 트리거하는 구성 요소의 선택 요소에 각도 1.5 ng 변경
이제는 select에서 ng-change를 구현하고 싶습니다. 그래서이 함수에 전달하고 싶습니다. 내가 가진 문제는 함수가 새로운 값이 아닌 이전 값으로 트리거된다는 것입니다. 함수가 실제로 변경되기 전에 트리거되는 것을 볼 수 있습니다. 변경 기능을 구성 요소 변경 이벤트 내에 넣으면 올바르게 등록되지만 전달 된 기능은 사용하지 않습니다.
는 나는 내가 뭔가를 간단 말이냐 생각 https://jsfiddle.net/7gd3m2k0/
<div ng-app="demoApp">
<div ng-controller="RoleController as ctrl">
<nac-select
field="ctrl.MemberRole.record.member"
list="ctrl.Lists.Member"
label="Member"
on-change="ctrl.MemberRole.changeMember();"></nac-select>
<div ng-bind="ctrl.MemberRole.record.member.name"></div>
</div>
</div>
angular.module('demoApp', [])
.component('nacSelect', nacSelect)
.controller('RoleController', roleController)
var nacSelect = {
bindings: {
field: '=',
list: '<',
label: '@label',
onChange: '&'
},
controller: function() {
var ctrl = this;
ctrl.change = function() {
alert(ctrl.field.name); //gives new selection
ctrl.onChange(); //gives previous selection
}
},
template: `
<label>{{$ctrl.label}}</label>
<select ng-model="$ctrl.field" ng-options="r as r.name for r in $ctrl.list" ng-change="$ctrl.change();">
<option value="">(Please Select)</option>
</select>
`
};
var roleController = function(){
var ctrl = this;
ctrl.Lists = {
Member: [
{id: 1, name: 'Fred Smith'},
{id: 2, name: 'Jenny Jones'},
{id: 3, name: 'Jane Doe'}
]
};
ctrl.MemberRole = {
record: {
member: null
},
changeMember: function(){
alert(ctrl.MemberRole.record.member.name);
}
};
};
에서 컷 다운 바이올린을 만들었습니다,하지만 난 그것을 알아낼 수 없습니다. 당신은 첫 번째 컨트롤러에 경고 할 변수에 전달해야 당신의 도움
감사합니다.하지만 전체 개체를 전달하려면 어떻게합니까? 구성원과 역할의 두 가지 객체가 있습니다. 주 컨트롤러의 기능은 기본적으로 : if (멤버가 object이고 role이 object 인 경우) 다음 몇 가지 검사를 수행합니다. 그래서 그 함수에서 모델의 값을 사용하려고했습니다. –
그것은 객체를 전달하고, 업데이트 된 답변을 확인하는 것과 동일합니다. 또한 이것이 작동 할지라도 당신의 접근 방식을 다시 생각해보아야 만합니다. 만약 당신이 컴포넌트 기반 아키텍처로 시작했다면, 부모 컴포넌트에서 2 웨이 바인딩을 사용해서는 안됩니다. 전체 목적은 구성 요소를 작고 재사용 할 수 있도록 분리하는 것입니다. 나는 이것, 정말로 최고의 튜토리얼을 구성 요소 기반의 아키텍처에 대한 온라인 : https://github.com/toddmotto/angularjs-styleguide – pegla
대단히 감사합니다 - 나는 단지 https의 결과로 개체를 보내는 것을 알아 냈다 : /stackoverflow.com/questions/18378520/angularjs-pass-function-to- directive. 내가 선택을 변경하면 원하는 기능을 전달하여 구성 요소를 작고 재사용 할 수 있다고 생각했기 때문에 귀하의 제안을 읽을 것입니다 :). –