2015-02-05 39 views
4

我有一個簡單的離子模板如下。在量角器中,我如何編寫定位器來定位離子元素,比如標題和左右按鈕。我如何檢查標題是「我的標題」?我無法綁定H1,因爲我的模板中有很多H1。如何使用量角器識別離子標籤?

<ion-header-bar align-title="left" class="bar-positive"> 
    <div class="buttons"> 
     <button class="button" ng-click="doSomething()">Left Button</button> 
    </div> 
    <h1 class="title">My Title</h1> 
    <div class="buttons"> 
     <button class="button">Right Button</button> 
    </div> 
</ion-header-bar> 
<ion-content> 
    Some content! 
</ion-content> 

回答

0

我會找到的元素by xpath依靠自己的標籤名稱,類別和相對位置:

var title = element(by.xpath('//h1[@class="title" and following-sibling::div[@class="buttons"] and preceding-sibling::div[@class="buttons"]')); 
var leftButton = title.element('preceding-sibling::div[@class="buttons"]/button'); 
var rightButton = title.element('following-sibling::div[@class="buttons"]/button'); 
+0

謝謝alecxe。對我有效。欣賞你花時間回覆。 – Nat 2015-02-06 03:57:51

+0

我希望有一種比使用xpath更好的方法。它比能夠添加ID更加脆弱。我會說這是一個負面的事情,當離子是選擇使用。任何人都知道他們是否計劃在某些時候添加ID的能力? – rfodge 2016-06-20 23:38:55

+0

@rfodge你不必使用XPaths來定位離子元素。標籤名稱是相當具有描述性的,並且有一些很好的類和屬性可以依賴。請嘗試使用CSS選擇器。例如,要找到按鈕: '$$(「ion-header-bar .buttons button」)'。 – alecxe 2016-06-20 23:48:10

0
  1. 在你的控制,定義

    $ scope.someTag = 「無所謂」

  2. 應用的功能,在控制器上$scope.someTag

  3. 在你的DOM(用於例如您的標題),分配:

    tit le =「{{someTag}}」

通過這種方式,您可以控制自己在做什麼!

+0

謝謝AMG的回覆。 你的答案雖然有效,但需要大量重寫我的整個項目。 :-(如果這是最佳做法,我會這樣做的 實質上,視圖數據在控制器中被複制,這看起來並不合適。將來,我也希望NLS在視圖中的字符串,然後我的控制器會臃腫 想法? – Nat 2015-02-05 19:26:55

0

我能得到它的工作使用本與文本右鍵保存:

var saveButton = element(by.css('.right-buttons')).element(by.cssContainingText('button', 'Save')); 

我的猜測是,你可以爲例如左鍵左側的按鈕,上面寫着迴文本做同樣的:

var backButton = element(by.css('.left-buttons')).element(by.cssContainingText('button', 'back'));