2016-06-23 1 views
0

Nativescript에서 세그먼트 막대를 만들었지 만, 변경 한 내용은 내가 작성한 propertyChangeEvent 리스너에 의해 선택되지 않습니다. 누군가 내 실수를 말해 줄 수 있습니까? 감시 객체 내 인덱스를 바인딩하고 PropertyChange 이벤트를 생성하는 XMLNativescript SegmentedBar propertyChangeEvent

<SegmentedBar row="1" colspan="3" class="toggles" selectedBackgroundColor="#B76769" selectedIndex="{{ bookingsObsSelectedIndex }}"> 
     <SegmentedBar.items> 
      <SegmentedBarItem title="Product"/> 
      <SegmentedBarItem title="Service" completed="false"/> 
      <SegmentedBarItem title="Total" completed="true"/> 
     </SegmentedBar.items> 
</SegmentedBar> 

에 대한

코드입니다.

var observableModule = require("data/observable"); 
var bookingsObsSelectedIndex = new observableModule.Observable(); 

bookingsObsSelectedIndex.on(observableModule.Observable.propertyChangeEvent, function (propertyChangeData) { 
    console.log("Property changed for bookingsObs, changed property name: = "+propertyChangeData.propertyName); 
}); 

죄송합니다. Nativescript를 처음 사용합니다. 지정한 단계를 수행하려고 시도 중 here.

답변

0

당신이 읽고있는 답변은 약간 오래되었으므로 n selectedIndexChanged 이벤트가 SegmentedBar에 추가되었습니다.

<SegmentedBar row="1" colspan="3" class="toggles" selectedBackgroundColor="#B76769" 
selectedIndex="{{ bookingsObsSelectedIndex }}" selectedIndexChanged="segmentedBarIndexChanged"> 
      <SegmentedBar.items> 
       <SegmentedBarItem title="Product"/> 
       <SegmentedBarItem title="Service" completed="false"/> 
       <SegmentedBarItem title="Total" completed="true"/> 
      </SegmentedBar.items> 
    </SegmentedBar> 

을 그리고 같은 것을 가지고 자바 스크립트 페이지의 : 그래서 그 대신 바운드 관찰의 propertyChanged 이벤트를 사용하여 직접 새 이벤트에 연결할 수에

function segmentedBarIndexChanged(args) { 
    console.log("Tab selected: " + args.newIndex + ", old one is:" + args.oldIndex); 
} 
exports.segmentedBarIndexChanged = segmentedBarIndexChanged; 
+0

고마워, 이것이 정확히 내가 찾고 있었던 것이다. – RCS

0

속성 변경 이벤트를 처리하려면 대신 addEventListener 메서드를 사용해야합니다. 당신이에 대한 자세한 내용을 읽을 수 것과

메인에서 page.xml

<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo"> 
    <StackLayout> 
    <SegmentedBar selectedIndex="{{ bookingsObsSelectedIndex }}"> 
     <SegmentedBar.items> 
      <SegmentedBarItem title="Product"/> 
      <SegmentedBarItem title="Service" completed="false"/> 
      <SegmentedBarItem title="Total" completed="true"/> 
     </SegmentedBar.items> 
    </SegmentedBar> 

    </StackLayout> 
</Page> 

메인 page.js 점에서

var observable_1 = require("data/observable"); // Event handler for Page "navigatingTo" event attached in main-page.xml function navigatingTo(args) { 
    // Get the event sender 
    var page = args.object; 
    var newObservable = new observable_1.Observable(); 
    newObservable.set("bookingsObsSelectedIndex", 1); 
    newObservable.addEventListener(observable_1.Observable.propertyChangeEvent, function (pcd) { 
     console.log(pcd.eventName.toString() + " " + pcd.propertyName.toString() + " " + pcd.value.toString()); 
    }); 
    page.bindingContext = newObservable; } exports.navigatingTo = navigatingTo; 

: 코드는 다음과 같이해야한다 바인딩 here

+0

를'()'않습니다 'addEventListener()'와 같은 것 https://docs.nativescript.org/api-reference/classes/_data_observable_.observable.html#on –