2013-03-23 37 views
0

我正在使用Angularjs和rails來構建網站。該頁面管理Foo對象,Foo具有名稱字段和定義字段。如何從angularjs中選擇更新屬性

在我的編輯頁面我正在處理Foo對象1,並且我有一個select(drop down)控件,其中包含現有Foo對象的列表以從中進行選擇(過濾掉當前的Foo對象)

如果用戶從select中選擇一個現有的Foo對象我不想更改我正在編輯哪個Foo對象,我只希望當前的Foo對象的定義字段用選定的定義字段內容進行更新Foo對象(從選擇框中)。

我現在有一個選擇這樣定義:(和obj與Foo對象我的工作)

<select id="foo_list{{obj.id}}" ng-model="obj.definition" 
     ng-options="d.name for d in existing_foos | orderBy:'name'" 
     ng-change="changeFooDefinition()"> 
</select> 
在changeFooDefinition()方法

我想更新與當前obj.definition定義選擇的Foo對象。

當前代碼所做的是更改我在整個表單中處理的Foo對象。我只想將選定的定義複製到當前的對象定義中。我怎樣才能做到這一點?

在此先感謝,

最大

回答

1

目前你已綁定到Foo對象,foo的對象不只是定義$ scope.obj.definition。你需要做的是將選定的Foo對象綁定到另一個範圍變量,然後將obj.definition設置爲等於這個新變量(應該是Foo對象)的定義。

HTML:

<select id="foo_list{{obj.id}}" ng-model="selectedFoo" 
    ng options="d.name for d in existing_foos | orderBy:'name'" 
    ng-change="changeFooDefinition()"> 
</select> 

JS:

myApp.controller('Ctrl', ['$scope, function($scope) { 
    $scope.obj = { name: 'currFoo', definition: 'changePls', id: 333 }; 

    $scope.existing_foos = [ 
     { name: 'foo1', definition: 'first foo', id: 1 }, 
     { name: 'foo2', definition: '2nd foo', id: 2 }, 
     {name: 'foo3', definition: '3rd foo', id: 3 } 
    ]; 

    $scope.changeFooDefinition() { 
     obj.definition = selectedFoo.definition; 
    } 
}]); 

看到它在這裏工作:http://jsfiddle.net/ADukg/2120/

讓我知道如果我誤解了你問,如果是希望我能解決我的相應地回答。

+0

昨天我們與當地代碼營的一些人聊天后,我已經想到了這一點,基本上提出了你在這裏給出的同樣的答案。感謝您花時間幫助! – 2013-03-24 11:09:32