0

考慮到下面的代碼,我試圖用2個不同的對象動態地構造ng-model,如果它滿足uniqueAttribute條件的話。有沒有辦法分配一個函數並動態創建ng-model?

<input type="text" class="form-control" ng-model="vm.isUniqueAttribute(entityDefinition)" required /> 

下面是它返回vm.abcvm.def綁定到ng-model

  vm.isUniqueAttribute = function(entityDef) { 
       return entityDef.isUnique === 'true' ? 'vm.abc': 'vm.def'; 
      } 

的功能,但它引發的錯誤爲:

Error: [ngModel:nonassign] Expression 'vm.isUniqueAttribute(entityDefinition)' is non-assignable.

有沒有一種方法來處理它喜歡或任何替代方法來實現這一目標?

我可以通過分配一個單獨的對象,然後將其分類爲2個不同的對象作爲最終選項。但是,只是想知道是否可以毫不費力地處理它。

+0

您的代碼必須正常工作。是否定義了'entityDefinition'(這是參數)?該問題僅在參數內。 – SaiUnique

+0

無法將功能分配給ng-model – Mithun

+0

需要使用參數本身來構建它。如果它是真的,它會阻止綁定到trueobject或falseobject – Mithun

回答

0

在兩個模型中使用兩個不同的元素,並在ng-if的幫助下根據標誌切換所需的元素。

<input type="text" class="form-control" ng-model="vm.abc" ng-if="vm.isUniqueAttribute(entityDefinition)" required /> 
<input type="text" class="form-control" ng-model="vm.def" ng-if="!vm.isUniqueAttribute(entityDefinition)"required /> 
+0

傳遞的數據是可以做到的。但是約束是這個文本字段正在形成一個循環,所以使用這種方法,我們總會有2個輸入字段。如果是10,則是雙倍。 – Mithun

0

你可以使用括號符號來設置ng-model爲的objectvm.modelCollection)的屬性,並與isUniqueAttribute方法返回給定屬性的名稱。

<input type="text" class="form-control" ng-model="vm.modelCollection[vm.isUniqueAttribute(entityDefinition)]" required /> 

然後

vm.isUniqueAttribute = function(entityDef) { 
    return entityDef.isUnique === 'true' ? 'abc': 'def'; 
} 

如果這種方法適合您的需要

0

我會建議利用與動態內容的靜態模型,我不知道。我在示例中使用了「ng-init」來提供動態數據,但是您可以依賴控制器根據您的需要提供它。 (如狀態這裏https://docs.angularjs.org/api/ng/directive/ngInit

示例代碼:

$scope.Model = []; 
$scope.SetModelWithDynamicContent = function(index) { 
if ($scope.Model.indexOf(index) == -1) { 
    //Add your conidition here(.isunique). I have used odd or even number. 
    if (index % 2 == 0) 
    $scope.Model.push({ 
     Property: "Bind vm.abc" 
    }); 
    else 
    $scope.Model.push({ 
     Property: "Bind vm.def" 
    }); 
} 

它的完整代碼可以在http://plnkr.co/edit/gFa26r?p=preview

發現請記住,以紀念本作的答案,如果它解決您的問題!

相關問題