2013-08-27 97 views
3

想寫一個內嵌編輯功能,而無需使用模板,這裏 http://plnkr.co/edit/EsW7mV?p=preview如何在沒有模板的情況下在angularjs中進行內聯編輯?

+0

通過在沒有模板的情況下編寫指令可能有助於理解您嘗試實現的目標嗎?有幾種方法可以解決這個問題(然而,模板可能是最好的方法),但是不知道你想要達到什麼目的,我不知道要展示哪種方法。 –

+0

那麼我們在這裏需要做什麼? – BKM

+0

模板是最好的方式,我同意。但是,當我們有動態的價值時,模板變成了一個大問題。所以我在尋找的是一個不使用模板的在線編輯的例子。希望這可以幫助。 –

回答

6

概述您可以只需將模板的代碼在主頁。

<li ng-repeat="todo in todos" inline-edit="todo.title" on-save="updateTodo(todo.title)" on-cancel="cancelEdit(todo.title)"> 
    <div> 
    <input type="text" on-enter="save()" on-esc="cancel()" ng-model="model" ng-show="editMode"> 
    <button ng-click="cancel()" ng-show="editMode">cancel</button> 
    <button ng-click="save()" ng-show="editMode">save</button> 
    <span ng-mouseenter="showEdit = true" ng-mouseleave="showEdit = false"> 
    <span ng-hide="editMode" ng-click="edit()">{{model}}</span> 
    <a ng-show="showEdit" ng-click="edit()">edit</a> 
    </span> 
    </div> 
</li> 

這裏有一個小提琴:

http://jsfiddle.net/siliconball/QwDn9/2/

而且如果需要的控制器範圍內以任何理由地方scope: false在指令temeber帶走templateUrl: 'inline-edit.html'

。但是,你將不得不跟蹤你在任何時候編輯哪個選項(可能使用id)。如果那是你的情況,我建議重構一下,如你所知,可能不是最好的選擇。

如果您的情況,我想是的,是因爲您要通過一些CGI或動態內容腳本生成它,並且您不希望在不同的頁面中編寫相同的代碼(+腳本接口...),那麼我建議也爲了正交性而移動inline-edit="todo.title"<div>中的所有指令。

+3

任何想法爲什麼這不再適用於Angular 1.2。*? – isset

+0

他們都有'ng-model ='model'',我不明白爲什麼它支持同一個多重編輯? –

相關問題