2016-09-05 165 views
1

我在我的應用程序中使用Angular Material。在ng-repeat列表中,我有字段。不過,我希望用戶能夠將經常使用的前綴添加到文本中。例如,如果他想輸入「hours:5」,他可以點擊一個按鈕,在輸入區域添加「hours:」,因此他只需鍵入5.

這就是我現在所擁有的:HTML:
在功能中更改ng-repeat範圍不會更新範圍

<md-menu> 
           <md-button ng-click="$mdOpenMenu($event)" class="ps-button" aria-label="Open sample menu"> 
           + 
           </md-button> 
           <md-menu-content class="ps-selectcontainer"> 
           <md-menu-item ng-repeat="remark in remarks"><md-button class="ps-button" ng-click="addRemark(remark, this)">{{remark}}</md-button></md-menu-item> 
           </md-menu-content> 
          </md-menu> 
          </md-input-container> 

輸入容器:

<md-input-container md-no-float class="md-block" > 
          <input ng-model='form_noteName' type="text" placeholder="Note" maxlength="255" required> 
          </md-input-container> 

而且在Javascript:

$scope.addRemark = function (remark, repeatScope){ 

     if(repeatScope.form_noteName){ 
      repeatScope.form_noteName = remark + repeatScope.form_noteName; 
      $scope.stupidvariable = repeatScope.form_noteName; 
      return; 
     } 
     repeatScope.form_noteName = remark; 
     return; 
    }; 

的想法是,當我在MD-菜單上的項目點擊打開功能addRemark傳遞範圍,addRemark它修改的範圍和輸入字段已經改變。
但變量form_noteName不會改變,我不知道我做錯了什麼。我在這裏做錯了什麼?

編輯:這裏有一個Plunker有一個類似的方法:http://plnkr.co/edit/1j3F64YyJPftxLf8QaZD?p=preview

謝謝:)

+0

'repeatScope.form_noteName'指的是什麼?在這個HTML中沒有任何屬性看起來像這樣。另外,您提到了一個輸入字段,但同樣,它看起來不像您的代碼中有輸入字段。無論如何,你爲什麼要修改一個角度控制結構(範圍)而不是簡單地將新的'remark'推入到'remarks'數組中? – Claies

+0

我編輯了這個問題,添加了輸入容器,我在範圍內試了一下,因爲現在我想不出任何其他方法。我希望用戶能夠將預先寫好的文本添加到輸入字段 – jakooob

+0

,這仍然沒有意義;你正在點擊已經在數組中的項目(正在重複),以便將該項目的文本添加到不在重複內部的不同輸入的模型中?這導致我進一步從這個解決方案是正確的,因爲你的輸入不在你想改變的範圍內...... – Claies

回答

0

你不能有兩個NG-點擊。你需要把用分號隔開在一起,這樣既聲明:

ng-click="addRemark(remark, this); testvariable='remark'" 

你也可能不需要的「本」,因爲「此言一出」將給予特別的元素。但是,我沒有足夠的代碼來確定。

+0

對不起,忘記刪除它。問題是我想要改變輸入字段,這就是爲什麼我通過範圍,因爲在範圍中找到form_noteName。但它不更新範圍,所以我的輸入字段沒有更改:/ – jakooob